Опишите ошибку
Я получаю эту ошибку на консоли Chrome после создания оптимизированной для производства сборки.
Неперехваченная ошибка: не удается найти модуль ./locale
в 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"
}
Если я собираю локально с помощью пряжи для версии для разработчиков, она работает
Воспроизводить
Шаги по воспроизведению поведения:
Создайте приложение с этими требованиями. Должна появиться эта ошибка на консоли.
Ожидаемое поведение
Четкое и краткое описание того, что вы ожидали.
Скриншоты
Если возможно, добавьте снимки экрана, чтобы объяснить вашу проблему.
Рабочий стол (заполните следующую информацию):
Смартфон (заполните следующую информацию):
Момент-специфическая среда
Пожалуйста, запустите следующий код в своей среде и включите вывод:
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, чтобы переопределить версии субзависимости, это работает для меня
"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
Просто воспроизведите эту проблему
У меня так же!
Та же проблема,
Исправлено удалением знака каретки перед номером версии. Запись 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 :)
Обработка требования была возвращена к поведению 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"Похоже на баг из новой версии.
После этого работает!
Самый полезный комментарий
Та же проблема,
Исправлено удалением знака каретки перед номером версии. Запись Package.json теперь выглядит так:
"момент": "2.24.0"
Похоже на баг из новой версии.