Moment: Неперехваченная ошибка: не удается найти модуль ./locale

Созданный на 1 мая 2020  ·  69Комментарии  ·  Источник: moment/moment

Опишите ошибку
Я получаю эту ошибку на консоли Chrome после создания оптимизированной для производства сборки.

Неперехваченная ошибка: не удается найти модуль ./locale
в 2.d0944550.chunk.js: 1
в модуле.(2.d0944550.chunk.js: 1)
при f ((индекс): 1)
в Module.837 (main.091f08fc.chunk.js: 1)
при f ((индекс): 1)
на Object.540 (main.091f08fc.chunk.js: 1)
при f ((индекс): 1)
в ((индекс): 1)
в Array.e [как push] ((индекс): 1)
в main.091f08fc.chunk.js: 1

Это мой package.json

{
  "name": "sheetgo-front-end",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@allpro/react-router-pause": "^1.1.3",
    "@material-ui/core": "^4.4.2",
    "@material-ui/icons": "^4.5.1",
    "@material-ui/lab": "^4.0.0-alpha.26",
    "@material-ui/styles": "^4.4.1",
    "@material/icon-button": "^3.1.0",
    "@material/react-button": "^0.15.0",
    "@material/react-card": "^0.15.0",
    "@material/react-icon-button": "^0.15.0",
    "@material/react-material-icon": "^0.15.0",
    "@material/react-select": "^0.15.0",
    "@material/react-tab": "^0.15.0",
    "@mdi/js": "^3.4.93",
    "@mdi/react": "^1.1.0",
    "@stripe/react-stripe-js": "^1.1.0",
    "@stripe/stripe-js": "^1.2.0",
    "@svgr/webpack": "^4.1.0",
    "apexcharts": "^3.8.6",
    "axios": "^0.19.2",
    "browser-info": "^1.2.0",
    "chart.js": "^2.7.2",
    "classnames": "^2.2.6",
    "color-sort": "^0.0.1",
    "connected-react-router": "^6.5.2",
    "countup.js": "^1.9.3",
    "cra-append-sw": "^2.7.0",
    "filepond": "4.1.0",
    "filepond-plugin-file-validate-size": "2.1.1",
    "filepond-plugin-file-validate-type": "1.2.2",
    "form-serialize": "^0.7.2",
    "fuse.js": "^3.4.2",
    "history": "^4.10.1",
    "inputmask": "^4.0.0",
    "is-mobile": "^2.0.0",
    "jquery": "^3.3.1",
    "jquery-ui-sortable-npm": "^1.0.0",
    "js-cookie": "^2.2.0",
    "lodash": "^4.17.10",
    "markdown-to-jsx": "^6.10.3",
    "material-components-web": "^3.1.0",
    "material-ui-chip-input": "^1.0.0",
    "md5": "^2.2.1",
    "memoize-one": "^5.0.4",
    "moment": "^2.22.2",
    "moment-timezone": "^0.5.27",
    "onecolor": "^3.1.0",
    "p-queue": "^6.1.1",
    "payform": "^1.2.2",
    "promise-throttle": "^1.0.0",
    "prop-types": "^15.7.0",
    "query-string": "^6.5.0",
    "react": "^16.8.1",
    "react-apexcharts": "^1.3.3",
    "react-dom": "^16.8.1",
    "react-draggable": "4.2.0",
    "react-filepond": "7.0.1",
    "react-google-authorize": "^1.0.4",
    "react-hotjar": "^2.0.0",
    "react-id-swiper": "^1.6.8",
    "react-intl": "^2.5.0",
    "react-modal-video": "^1.2.3",
    "react-redux": "^7.1.1",
    "react-resizable": "^1.8.0",
    "react-router": "^5.1.2",
    "react-router-dom": "^5.1.2",
    "react-router-last-location": "^2.0.1",
    "react-scripts": "^2.1.4",
    "react-sizeme": "^2.5.2",
    "react-stripe-elements": "^4.0.0",
    "react-text-mask": "^5.4.3",
    "react-virtualized-auto-sizer": "^1.0.2",
    "react-vis-network": "^1.0.0",
    "react-window": "^1.8.1",
    "recompose": "^0.30.0",
    "redux": "^4.0.4",
    "redux-react-session": "^2.4.0",
    "redux-saga": "^1.1.1",
    "redux-thunk": "^2.3.0",
    "socket.io-client": "^2.3.0",
    "sort-by": "^1.2.0",
    "tether": "^1.4.4",
    "throttle-debounce": "^2.1.0",
    "url-loader": "^1.0.1"
  }

Если я собираю локально с помощью пряжи для версии для разработчиков, она работает

Воспроизводить
Шаги по воспроизведению поведения:
Создайте приложение с этими требованиями. Должна появиться эта ошибка на консоли.

Ожидаемое поведение
Четкое и краткое описание того, что вы ожидали.

Скриншоты
Если возможно, добавьте снимки экрана, чтобы объяснить вашу проблему.

Рабочий стол (заполните следующую информацию):

  • ОС: [например, iOS]
  • Браузер [например, Chrome, Safari]
  • Версия [например, 22]

Смартфон (заполните следующую информацию):

  • Устройство: [например, iPhone6]
  • ОС: [например, iOS8.1]
  • Браузер [например, стандартный браузер, сафари]
  • Версия [например, 22]

Момент-специфическая среда

  • Настройка часового пояса машины, на которой выполняется код
  • Время и дата запуска кода.
  • Другие используемые библиотеки (TypeScript, Immutable.js и т. Д.)

Пожалуйста, запустите следующий код в своей среде и включите вывод:

console.log((new Date()).toString())
console.log((new Date()).toLocaleString())
console.log((new Date()).getTimezoneOffset())
console.log(navigator.userAgent)
console.log(moment.version)

Дополнительный контекст
Добавьте сюда любой другой контекст проблемы.

Самый полезный комментарий

Та же проблема,

Исправлено удалением знака каретки перед номером версии. Запись Package.json теперь выглядит так:
"момент": "2.24.0"

Похоже на баг из новой версии.

Все 69 Комментарий

Точно. Я только что столкнулся с этой ошибкой и увидел, что они только что выпустили новую версию несколько часов назад.

если вы используете пряжу, добавьте блок разрешений в package.json, чтобы переопределить версии субзависимости, это работает для меня

  "resolutions": {
    "moment": "2.24.0"
  }

То же самое!

Также 2.24.0 все еще имеет предупреждение: ./node_modules/chart.js/node_modules/moment/src/lib/locale/locales.js Critical dependency: the request of a dependency is an expression

Просто воспроизведите эту проблему

У меня так же!

  • 1

Та же проблема,

Исправлено удалением знака каретки перед номером версии. Запись Package.json теперь выглядит так:
"момент": "2.24.0"

Похоже на баг из новой версии.

Сегодня вечером я установил Jest, и это создало проблему, и мне было приказано удалить все файлы yarn.lock и package.lock вместе с моей папкой модулей и выполнить установку yarn или npm install. Когда я установил пряжу, я получил ошибку, упомянутую в этом потоке - на появившейся странице говорилось, что ошибка была ошибкой веб-пакета, и указывалась временная зона. Когда я удалил свои файлы блокировки, папку модуля и переустановил с помощью npm install (вместо yarn install) - все заработало. Короче говоря, когда я использовал другую команду диспетчера пакетов, результат изменился.

Пожалуйста, удалите ^ в package.json, так что это сработало для меня 👍

Странно, что такой инцидент произошел в начале этой недели из-за того, что в библиотеке is-обещания также возникла проблема, такая как ^, которую нужно удалить. Я считаю, что теперь люди будут более или менее делать строгую версию package.json вместо ^

Пытался удалить каретку из package.json и запустить + rm -rf node_modules + yarn и у меня все еще возникает эта проблема при запуске webpack

Я использую моментальный часовой пояс, по умолчанию он равен 2.25. удаление каретки не имеет значения

То же самое!

У меня это работает, я использую приложение create-response-app.
// в webpack.config.js

plugins: [
...
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// replace the line above with below, regex to match the locale you want to use
new webpack.ContextReplacementPlugin(/moment[\/\\]locale/,  /(en|zh-cn)\.js/)
...
]

Похоже, есть проблема с их последней версией. Мне пришлось вернуться к «2.24.0» без «^», и это позволило моим сайтам строить.

Та же проблема здесь с моментальной версией 2.25.0 в одном из моих проектов на основе gatsby:

Cannot find module './locale'                              


> 1 | import { Moment } from './constructor';                                                                                                 
    | ^                                                                                                                                       
  2 |                                                                                                                                         
  3 | var proto = Moment.prototype;                                                                                                           
  4 |                                                                                                                                         


  WebpackError: Cannot find module './locale'                                                                                                 

  - prototype.js:1 webpackMissingModule                                                                                                       
    node_modules/moment/src/lib/moment/prototype.js:1:1                                                                                       

  - prototype.js:1 Module../node_modules/moment/src/lib/moment/prototype.js                                                                   
    node_modules/moment/src/lib/moment/prototype.js:1:1                                                                                       

  - moment.js:1 Module../node_modules/moment/src/lib/moment/moment.js                                                                         
    node_modules/moment/src/lib/moment/moment.js:1:1                                                                                          

  - moment.js:1 Module../node_modules/moment/src/moment.js                                                                                    
    node_modules/moment/src/moment.js:1:1

С момента 2.24.0 такой проблемы нет.

Может ли кто-нибудь предоставить минимальный (не) рабочий пример, чтобы это можно было исследовать?

мне пришлось вернуться к "2.24.0", момент не может найти './locale'

это отлично работает для меня: https://github.com/moment/moment/issues/4216#issuecomment -622453248

Может ли кто-нибудь предоставить минимальный (не) рабочий пример, чтобы это можно было исследовать?

Привет @ichernev - пожалуйста, прикрепите. Просто запустите npm install и npm start :)

issue5484.zip

Обработка требования была возвращена к поведению 2.24.0.

Исправлено в 2.25.1.

Я обновился до версии 2.25.1 , но ошибка все еще возникает.

prototype.js:1 Uncaught Error: Cannot find module './locale'
    at webpackMissingModule (prototype.js:1)
    at Module../node_modules/moment/src/lib/moment/prototype.js (prototype.js:1)
    at __webpack_require__ (bootstrap:782)
    at fn (bootstrap:150)
    at Module../node_modules/moment/src/lib/moment/moment.js (moment.js:1)
    at __webpack_require__ (bootstrap:782)
    at fn (bootstrap:150)
    at Module../node_modules/moment/src/moment.js (moment.js:1)
    at __webpack_require__ (bootstrap:782)
    at fn (bootstrap:150)
    at Module../src/Menu.js (Home.js:186)
    at __webpack_require__ (bootstrap:782)
    at fn (bootstrap:150)
    at Module../src/App.js (Add.js:157)
    at __webpack_require__ (bootstrap:782)
    at fn (bootstrap:150)
    at Module../src/index.js (index.css?02e3:45)
    at __webpack_require__ (bootstrap:782)
    at fn (bootstrap:150)
    at Object.0 (serviceWorker.js:135)
    at __webpack_require__ (bootstrap:782)
    at checkDeferredModules (bootstrap:45)
    at Array.webpackJsonpCallback [as push] (bootstrap:32)
    at main.chunk.js:1

Но может я что-то не так делаю. Кто-нибудь может подтвердить, что эта ошибка исчезла в 2.25.1?

Та же проблема для меня и моментального часового пояса. Ive пробовал форсировать 2.24.0, но все еще та же проблема, так как я предполагаю, что в момент-часовом поясе используется последняя версия?

По-прежнему появляется ошибка

@ unknown1120 - это [email protected]?
Если вы используете пряжу, попробуйте yarn why moment чтобы показать установленные зависимости.

@ichernev Извините, я могу подтвердить, что 2.25.1 выдает ту же ошибку. Используя приложение, которое я загрузил ранее, и чистый node_modules / package-lock.json, я вижу, что версия 2.25.1, но все равно бросает.

Почему эти вопросы закрыты ... это сеет хаос

Да, я тоже. Я думал это мой докер

Удалено предложение - не стоит в 2020 году :( @ichernev еще нет обновлений?

Для людей, использующих приложение create-response-app и не желающих извлекать CRA, вы можете установить:

Затем создайте config-overrides.js в корневом каталоге вашего проекта для дальнейшего переопределения.

module.exports = function override(config, env) {
  // do stuff with the webpack config...
  return config;
};

Отредактируйте свой package.json:

"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",

Поскольку я использую дизайн муравьев, мой config-overrides.js выглядит так:

const { override, fixBabelImports } = require("customize-cra");
const webpack = require("webpack");

const fixMomentJs = (config) => {
  config.plugins.push(
    new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
      if (!/\/moment\//.test(context.context)) {
        return;
      }
      // context needs to be modified in place
      Object.assign(context, {
        // include locales
        regExp: /^\.\/(fr|en)/,
        // point to the locale data folder relative to moment's src/lib/locale
        request: "../../locale",
      });
    })
  );
  return config;
};

module.exports = override(
  fixMomentJs,
  fixBabelImports("import", {
    libraryName: "antd",
    libraryDirectory: "es",
    style: "css",
  })
);

А вот у вас будет попроще, думаю примерно так:

module.exports = function override(config, env) {
  config.plugins.push(
    new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
      if (!/\/moment\//.test(context.context)) {
        return;
      }
      // context needs to be modified in place
      Object.assign(context, {
        // include locales
        regExp: /^\.\/(fr|en)/,
        // point to the locale data folder relative to moment's src/lib/locale
        request: "../../locale",
      });
    })
  );
  return config;
};

Для людей, у которых есть доступ к Webpack, вы можете добавить следующую запись в свой массив плагинов в конфигурации Webpack:

    new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
      if (!/\/moment\//.test(context.context)) {
        return;
      }
      // context needs to be modified in place
      Object.assign(context, {
        // include locales
        regExp: /^\.\/(fr|en)/,
        // point to the locale data folder relative to moment's src/lib/locale
        request: "../../locale",
      });
    })

Пока исправление не будет выпущено, как было упомянуто @saadzr , вы можете временно просто назначить момент версии "2.24.0". Удалите carret: "^".

Для тех, кто не умеет это делать. Найдите пакеты, в которых используется момент: npm ls moment . Вы, наверное, увидите:

└─┬ [email protected]
  ├── [email protected] 
  └─┬ [email protected]
    └── [email protected]  deduped

Итак, внутри antd/package.json и rc-picker/package.json в dependencies :

"moment": "^2.24.0", -> "moment": "2.24.0"

И запустите npm i ДВАЖДЫ. Не знаю, зачем нужно дважды, но работает только через два раза.

@ talgat-ruby. Это подразумевает редактирование папки node_modules, которая не помещается в репозитории, люди, которые клонируют проект, должны будут делать это каждый раз, я думаю, это не лучший обходной путь.
Например, мы работаем с несколькими соавторами, и мы не можем сказать им делать это каждый раз, когда они клонируют репозиторий.
Лучший способ исправить это до тех пор, пока исправление не будет выпущено, - это настроить Webpack, как указано выше.

@nathanagez это временное исправление. Команда Antd, вероятно, скоро выпустит официальное исправление. И да, вы правы, на это нельзя полагаться.

@ talgat-ruby Я объяснил, как настроить Webpack, см. выше, чтобы вы могли применить обходной путь в своем репозитории.

Это сработало:
https://github.com/moment/moment/issues/4216#issuecomment -622453248

Я могу подтвердить, что предложение @ talgat-ruby устранило проблему для меня.

@rilyu Ваше предложение у меня сработало!

Я использую часовой пояс и не указал версию на данный момент.
Похоже, что во время установки ищите последнюю версию moment как зависимость -> [email protected], и она несовместима.

Действительно добавление
"разрешения": {"момент": "2.24.0"}
решает проблему.

Большое спасибо

Есть новости от разработчиков?

Получение этой ошибки с помощью MaterialUI DatePicker. Пытался вручную откатиться до 2.24.0, но мне не повезло. Надеюсь, что это скоро решится. Думаю, сейчас я буду использовать собственный TextField type = "date".

Та же проблема,

Исправлено удалением знака каретки перед номером версии. Запись Package.json теперь выглядит так:
"момент": "2.24.0"

Похоже на баг из новой версии.

У меня это работает! Tnx

У меня такая же проблема, я удалил папку node_modules, затем изменил версию момента на 2.24.0, а затем снова установил, проблема не устранена.
Когда я проверяю, что rc-calendar использует 2.25.1, что-то вроде этого. Я попытался отредактировать там и сделал yarn install проблема все еще не устранена. Пожалуйста, помогите, я работаю над важным проектом

@faizhameed Попробуйте удалить папку node-modules.
Удалите также ваш package-lock.json (yarn.lock также, если вы используете yarn).

Добавьте это в свой package.json после зависимостей: {
...
},
разрешения: {"moment": "2.24.0"}

Это должно заставить rc-datepicker использовать момент 2.24

Та же проблема здесь после обновления до 2.25.0 и 2.25.1.
Единственное решение, которое сработало для меня, - это перейти на версию 2.24.0.

К сожалению, у меня такая же проблема. По какой-то причине решение в package.json у меня не работает.
resolutions: { "moment": "2.24.0" }

А пока я собираюсь понизить версию, например,

Для меня установка версии на "moment": "2.24.0" и добавление resolutions: { "moment": "2.24.0" } временно решила проблему.

Модуль не найден: ошибка: не удается разрешить './locale' в 'D: \ Downloads \ Telegram \ ildamnode_modules \ rc-pickernode_modules \ momentrc \ lib \ locale'

Как это преодолеть?

"момент": "2.24.0"

"dependencies": {
"antd": "^ 4.2.0",
"axios": "^ 0.19.2",
"имена классов": "^ 2.2.6",
"cross-env": "^ 7.0.2",
"два": "^ 2.4.1",
"dva-model-extend": "^ 0.1.2",
"less-vars-to-js": "^ 1.3.0",
"libphonenumber-js": "^ 1.7.50",
"lodash": "^ 4.17.15",
"lodash.clonedeep": "^ 4.5.0",
"момент": "2.24.0",
«nprogress»: «^ 0.2.0»,
"путь к регулярному выражению": "^ 6.1.0",
"prop-types": "^ 15.7.2",
"строка-запроса": "^ 6.12.1",
"реагировать": "^ 16.13.1",
"формат-валюты-реакции": "^ 1.0.0",
"реагировать-настраиваемые-полосы прокрутки": "^ 4.2.1",
"react-dom": "^ 16.13.1",
"реагировать-шлем": "^ 6.0.0",
"react-perfect-scrollbar": "^ 1.5.8",
"svg-sprite-loader": "^ 4.2.1",
"umi-plugin-locale": "^ 2.11.5"
},

У меня сработало понижение до 2.24.0. Удалите ^ с помощью 2.24.0.
Также вручную обновил все текущие зависимости до 2.24.0 в package-lock.json.

Возникла проблема с 2.24, пытаюсь поставить "разрешения" ... но я не обновился до 2.25, что не так? Он работал в четверг.

У меня сработало понижение до 2.24.0. Удалите ^ с помощью 2.24.0.
Также вручную обновил все текущие зависимости до 2.24.0 в package-lock.json.

Спасибо, сработало! Проблема с пряжей. Работал с Npm

Пока исправление не будет выпущено, как было упомянуто @saadzr , вы можете временно просто назначить момент версии "2.24.0". Удалите carret: "^".

Для тех, кто не умеет это делать. Найдите пакеты, в которых используется момент: npm ls moment . Вы, наверное, увидите:

└─┬ [email protected]
  ├── [email protected] 
  └─┬ [email protected]
    └── [email protected]  deduped

Итак, внутри antd/package.json и rc-picker/package.json в dependencies :

"moment": "^2.24.0", -> "moment": "2.24.0"

И запустите npm i ДВАЖДЫ. Не знаю, зачем нужно дважды, но работает только через два раза.

Работающий! <3

yarn remove + yarn add moment установлена ​​версия 2.25.2, которая мне подходит

yarn remove + yarn add moment установлена ​​версия 2.25.2, которая мне подходит

Разве это не было бы проблемой в этой версии?

@ Shakxzod-Namazbaev Я думаю, что исходная проблема была с версией 2.25.0, некоторые люди сообщили, что та же проблема возникает в 2.25.1, другие отметили, что для них работает переход на версию 2.24. В моем случае, похоже, работает версия 2.25.2, поэтому, возможно, переход на более раннюю версию не требуется.

@ Shakxzod-Namazbaev Я думаю, что исходная проблема была с версией 2.25.0, некоторые люди сообщили, что та же проблема возникает в 2.25.1, другие отметили, что для них работает переход на версию 2.24. В моем случае, похоже, работает версия 2.25.2, поэтому, возможно, переход на более раннюю версию не требуется.

Значит, у вас сейчас нет проблем с версией 2.25.2, верно?

@ Shakxzod-Namazbaev точно, у меня 2.25.2 работает нормально.

Подтверждаю - момент 2.25.2 у меня тоже работает.

Я думаю, что 2.25.2 в порядке в автономной форме, но в управляемой пакетом форме он все еще не работает (в моем случае webpack, где момент зависит от часового пояса момента).

2.24.0 по-прежнему остается тем, кто использует webpack и другие пакеты, зависящие от момента.

вер. 2.25.2 у меня работает в форме, управляемой пакетами - webpack настроен в проекте на основе gatsby (вер. 2.25.0 не работает):

соответствующие package.json строки:

dependencies: {
    ...
    "moment": "^2.25.2",
    ...
}

Но я не использую moment-timezone .

Настолько безумно, что этот отчет о проблеме все еще остается закрытым с таким количеством затронутых людей, и единственное «решение» на данный момент - вернуться к старой версии!?!?!

@ichernev Спасибо! Обновление до 2.25.2 решает эту проблему!

--- a/front/package.json
+++ b/front/package.json
@@ -5,7 +5,7 @@
   "dependencies": {
-    "moment": "^2.22.2",
+    "moment": "^2.25.2",

В ПОРЯДКЕ. Я слишком рано хвалил. Хотя с момента вер. 2.25.2 webpack может создавать рабочий пакет без ошибок, но импорт локали больше не работает - похоже, что его игнорируют (возможно, это как-то связано с sideEffects / дрожанием дерева ?).

Например:

import moment from "moment"
import "moment/locale/pl"

// set global 'moment' locale (polish)
moment.locale("pl")

// ... somewhere later
console.log(moment().format("DD MMMM YYYY HH:mm:ss"))

В версии 2.25.2 выводится 04 May 2020 16:38:15 , что неверно, как и должно быть.
04 maja 2020 16:38:58 .

Итак, версия 2.24.0 по-прежнему остается последней работающей.

Я столкнулся с той же проблемой, удаление моркови из версии исправило это.

Примерно так в вашем файле package.json --- "moment": "2.24.0"

Версия: 2.24.0

Ну, я тестировал локально, и я не могу точно сказать, почему, но если это свойство package.json module то оно сломано. Если есть только jsnext:main он работает. Это связано с тем, что файлы локали не загружаются должным образом, хотя все еще включены в пакет.

Таким образом, это «современное» свойство модуля, которое поддерживает jsnext: main , не является просто переименованием или альтернативным именем. У него есть некая скрытая повестка дня, которая плохо разрекламирована.

2.25.3 вышла без module .

@ichernev - спасибо! Я могу подтвердить, что версия 2.25.3 работает (веб-пакет может создавать пакеты без ошибок и включая / настройку локали работает должным образом).

Исправления в 2.25.3 для меня.

Та же проблема,

Исправлено удалением знака каретки перед номером версии. Запись Package.json теперь выглядит так:
"момент": "2.24.0"

Похоже на баг из новой версии.

После этого работает!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги