Moment: Ошибка Webpack: не удается найти модуль "./locale" после обновления до 2.19.0.

Созданный на 10 окт. 2017  ·  149Комментарии  ·  Источник: moment/moment

Изменить: если вы установите свою зависимость на 2.18.1, все будет в порядке.
Изменить 2: установите "moment": "2.18.1" в свой package.json
Изменить 3: Мы считаем, что это исправлено.

Привет.
Использование create-response-app. После обновления момента до 2.19.0 у меня появляется эта ошибка при загрузке:

Ошибка: не удается найти модуль "./locale"
-> 9 стековых фреймов были свернуты.
./src/utils/Utils.js
src / utils / Utils.js: 1

1 | импортный момент из "момент"

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

@patricksteenks : да. Исправьте это в вашем package.json "moment": "2.18.1"

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

У меня то же самое, подтверждающее эту ошибку.

то же самое

Могу подтвердить:

This relative module was not found:

* ./locale in ./node_modules/moment/src/lib/locale/locales.js

Хорошо, мы рассмотрим это, но это будет не очень быстро.

Мы изменили имя функции require, если кто-то может увидеть / исследовать, связана ли она с:

https://github.com/moment/moment/pull/4213
https://github.com/moment/moment/pull/4214

Здесь та же проблема. Решит ли проблему переход на более раннюю версию?

То же самое, сломало несколько приложений, над которыми я работаю.

@patricksteenks : да. Исправьте это в вашем package.json "moment": "2.18.1"

@ichernev эй, но я использую локаль без импорта. Просто используйте import moment from 'moment' и используйте вот так moment(date).locale('uk').format('ddd') . Как я понял, вы изменили импорт на locale . Как я могу это исправить в моем случае?

Такая же проблема с проектом, созданным с помощью Angular-CLI

Подтвержденный.

Пострадали и сборки VueJS 2 Webpack. Временное исправление - это то, что предложил GautierT (понизить версию momentjs)

package.json (проблема с моментом-часовым поясом в момент 2.19)

    "moment": "2.18.1",
    "moment-timezone": "^0.5.13",

package.json (проблема в целом)

    "moment": "2.18.1"

Я могу подтвердить, что это тоже происходит!

я могу подтвердить.
package.json

"moment": "2.18.1"

@renedx достаточно этой строчки

То же самое в приложении Angular 4.
Только что понижен до 2.18.1 (строгий номер версии в package.json)

Это тоже меня ударило. Я подозреваю, что это веб-пакет, который творит чудеса, распознавая динамическое «требование», и больше не может распознать его под новым именем, и поэтому локали никогда не включаются в пакет.

(Между прочим, вся эта ситуация ужасно похожа на то, для чего нужен динамический импорт ES6. Мы можем мечтать :-)

Я использую в веб-пакете с этой страницы

new IgnorePlugin(/^\.\/locale$/, /moment$/)

Теперь удалите это

И при необходимости

const moment = require('moment');

В настоящее время

const moment = require('moment').default;

Строго говоря, я думаю, что соединение Angular происходит просто потому, что большинство проектов Angular используют Angular-CLI, который внутренне использует Webpack. Но это может быть связано с какой-то конкретной конфигурацией Webpack в этом стеке.
Тем не менее, это кажется довольно общей проблемой комплектации.

Покайтесь, покайтесь, конец света уже наступил!

То же самое.

import moment from "moment"
import "moment/locale/fr"
moment.locale("fr")
WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/Users/kud/Projects/_contexte/lois-webapp/node_modules/moment/src/lib/locale'
 @ ./node_modules/moment/src/lib/locale/locales.js 65:16-60
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/index.js

То же самое и здесь - я исправил это с помощью пряжи, чтобы перегрузить настройки пакета по умолчанию:

поместите это в свой основной package.json (адаптируйте "момент-часовой пояс" к имени пакета, который загружает момент, если вы не загружаете момент напрямую):

  "resolutions": {
    "moment-timezone/moment": "2.18.1"
  },

как астероид длиной 10 км .... здесь так же ...

Какое расчетное время прибытия для исправления?

Хорошо, вот где мы находимся:

  • Если вы установите для своей зависимости 2.18.1, все будет хорошо.
  • Это проблема с https://github.com/moment/moment/pull/4213
  • Я задействовал как веб-пакет, так и команды разработчиков, чтобы обсудить, какое исправление подойдет для всех сторон.
  • Поскольку установка зависимости на 2.18.1 обеспечивает простое смягчение последствий, в настоящее время я не хочу выполнять откат. Вместо этого я хотел бы дождаться отзывов от Webpack и React Native, чтобы увидеть, сможем ли мы прийти к соглашению о том, что делать, чтобы продвинуть эту ситуацию вперед . По этой причине у меня нет расчетного времени прибытия для исправления.
  • MCVE можно найти здесь: https://github.com/mj1856/moment-webpack-test

Подтвержденная ошибка при запуске приложения React, созданного с помощью интерфейса командной строки create-response-app.

Решил этот момент понижения и версию monent-timezone.

npm install [email protected] в качестве временного исправления, чтобы вам не приходилось обновлять package.json несколько раз. Это, вероятно, скоро будет исправлено, тогда вы можете сделать npm i .

@aheissenberger это спасло мне жизнь, у меня была такая же проблема с rc-calendar, могу подтвердить, что это работает для пряжи 1.2.0.

Та же проблема webpack 3.6.0 + момент 2.19.0. Работал нормально с 2.18.1

У других может быть такая же проблема: хотя я не обновлялся до 2.19.0, в моем package.json у меня было ^2.18.1 . Я изменил его на 2.18.1 без ^ , и теперь он не будет устанавливать ничего выше, чем 2.18.1, пока мы не узнаем, что 2.19.x безопасен.

@ichernev кажется весьма вероятным, что переименование «require» является причиной этих широко распространенных поломок. Я подозреваю, что когда вам требуются модули, использующие такую ​​ссылку, это означает, что webpack не может обнаружить импорт, поскольку он использует статический анализ AST для определения зависимостей.

Возможно, вы могли бы предоставить некоторые сведения о проблеме React Native, которую он исправлял, поскольку может быть лучший способ обойти эту исходную проблему?

В нашем проекте мы используем yarn 1.0.2 , create-react-app , и эти зависимости в package.json

"dependencies": {
    "@types/history": "^4.5.0",
    "@types/jest": "^20.0.6",
    "@types/material-ui": "^0.18.2",
    "@types/moment-timezone": "^0.5.0",
    "@types/node": "^8.0.20",
    "@types/react": "^16.0.10",
    "@types/react-big-calendar": "^0.14.0",
    "@types/react-dnd": "^2.0.33",
    "@types/react-dnd-html5-backend": "^2.1.8",
    "@types/react-dom": "^16.0.1",
    "@types/react-modal": "^1.6.6",
    "@types/react-redux": "^4.4.40",
    "@types/react-router-dom": "^4.0.4",
    "@types/react-router-redux": "^5.0.0",
    "@types/redux": "^3.6.0",
    "@types/redux-logger": "^3.0.0",
    "@types/redux-promise-middleware": "^0.0.6",
    "@types/validator": "6.3.0",
    "lodash": "^4.17.4",
    "material-ui": "0.19.2",
    "material-ui-datatables": "^0.18.2",
    "material-ui-fullscreen-dialog": "0.7.1",
    "moment": "2.18.1",
    "moment-timezone": "^0.5.13",
    "react": "^15.6.1",
    "react-barcode": "^1.2.0",
    "react-big-calendar": "^0.15.0",
    "react-bootstrap": "^0.31.0",
    "react-bootstrap-table": "^3.4.2",
    "react-bootstrap-time-picker": "^1.0.3",
    "react-dnd": "^2.4.0",
    "react-dnd-html5-backend": "^2.4.1",
    "react-dock": "^0.2.4",
    "react-dom": "^15.5.4",
    "react-modal": "^1.7.7",
    "react-pdf-js": "^2.0.5",
    "react-phone-number-input": "^0.12.10",
    "react-print": "^1.3.1",
    "react-redux": "5.0.6",
    "react-router-dom": "^4.1.1",
    "react-router-redux": "next",
    "react-tap-event-plugin": "^2.0.1",
    "react-transition-group": "^1.1.1",
    "redux": "3.7.2",
    "redux-logger": "^3.0.1",
    "redux-persist": "^4.8.0",
    "redux-promise-middleware": "4.2.1",
    "reselect": "^3.0.1",
    "validator": "8.2.0",
    "zxcvbn": "^4.4.2"
 }

Хотя мы используем "moment": "2.18.1" , мы все равно получаем
screen shot 2017-10-10 at 3 53 43 pm

Есть ли способ решения проблемы с пряжей?

@ggsjyoon : У меня была аналогичная ситуация (ошибка все еще появляется), пока я не вспомнил, что вам нужно обновить один из файлов, которые наблюдает WebPack, чтобы он восстановился и удалил любую кешированную версию.

+1

@ggsjyoon может быть дополнительное требование от одного из ваших пакетов (например, момент-часовой пояс) - вы можете использовать мой совет https://github.com/moment/moment/issues/4216#issuecomment -335489518, чтобы исправить это с помощью пряжи

Я закончил это, изменив:

import * as moment from 'moment';

к:

import * as moment from 'moment/moment';

+1

@morrisonbrett Это работает. Спасибо

Подтверждение предложения @GautierT работает для меня.

@maggiepint Видя, что сработало для @morrisonbrett , я думаю, что # 4213 может не быть проблемой. 2.19 внесло еще одно новое изменение, поле модуля в package.json - т.е. ранее webpack использовал транспилированную версию.

Включение ES6 для нативной реакции - это то, что вызвало большинство проблем с блокировкой # 4187, а # 3904 (в ветке разработки только на некоторое время) внесло то же изменение для всех пользователей webpack.

@tqc - наверное и то, и другое. @thelarkinn уже подтвердил, что webpack не хочет динамических требований.

Та же проблема, есть обновления?

@maggiepint Да, сразу после того, как я написал этот комментарий, я понял, что ошибка в конце module.exports = require(‘moment’).default , но я не уверен, что это по-прежнему разрешает дрожание дерева, а гармония узла не любит смешивать импорт с требованием.

решается с помощью псевдонима webpack:

  resolve: {
    alias: {
      'moment$': 'moment/moment',
    },
  },

Может ли кто-нибудь выяснить все детали из 2.19, которые сломали webpack, предложить минимальный PR (основанный на 2.19.0), который отменяет «плохие» части, и мы рассмотрим его объединение для 2.19.1.

Сказать «я тоже» в течение 1000 раз мало что изменит.

Решение @morrisonbrett работает import * as moment from 'moment/moment';

Я могу подтвердить эту же проблему с помощью Angular-CLI v1.4.4. Сначала я был удивлен, когда увидел ошибку, связанную с momentjs, поскольку мой проект не использует ее, но после исследования я проследил ее внедрение до WebPack.

Вот мое предупреждающее сообщение при сборке:

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale'
resolve './locale' in '/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale'
  using description file: /Users/scott/Development/web-admin/node_modules/moment/package.json (relative path: ./src/lib/locale)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: /Users/scott/Development/web-admin/node_modules/moment/package.json (relative path: ./src/lib/locale)
    using description file: /Users/scott/Development/web-admin/node_modules/moment/package.json (relative path: ./src/lib/locale/locale)
      as directory
        /Users/scott/Development/web-admin/node_modules/moment/src/lib/locale/locale doesn't exist
[/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale/locale]
 @ ./node_modules/moment/src/lib/locale/locales.js 65:16-60
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/app/admin-analytics/admin-analytics.component.ts
 @ ./src/$$_gendir/app/app.module.ngfactory.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

Я также пробовал метод import * as moment from 'moment/moment'; но мне не повезло.

Привет, @kud , @AleshaOleg - если вы все еще пытаетесь импортировать локали:
вместо:
import 'moment/locale/*
пытаться:
import 'moment/src/locale/*'

Здесь боролись с той же проблемой ...
–––
@AleshaOleg : в вашем случае, я думаю, это может быть:
import moment from 'moment'
import 'moment/src/locale/uk'
а затем просто позвоните moment(date).format('ddd')

Спасибо @dialnco !

В итоге я столкнулся с этой проблемой при обновлении до 2.19.0 , полностью отключив код, который пытается загрузить локали.

({
  test: /moment\/src\/lib\/locale\/locales.js$/,
  enforce: 'pre',
  use: {
    loader: 'imports-loader',
    options: {
      module: '>undefined', // this disables the if
      require: '>false' // this prevents webpack from trying to parse the requires
    }
  }
})

Затем я вручную добавил import 'moment/src/locale/ja' , import 'moment/src/locale/pt-br' и другие по мере необходимости, вместо загрузки всех локалей. Если вы изобретательны, вы можете использовать динамические import() s вместо того, чтобы загружать только тот язык, который нужен вашему приложению.

Если вы это сделаете, очень важно сделать не import 'moment/locale/foo' , а import 'moment/src/locale/foo' . Из-за того, как файлы локали пытаются ссылаться на саму moment , они вместо этого объединят вторую копию moment (на этот раз сборка UMD, а не сборка ESM), и это будет в повернуть, снова загрузить все локали.

Надеюсь, это кому-то поможет (варианты 1 и 2 из комментария выше, спасибо @patsissons ):
-Если у вас нет модулей, загружающих moment.js, но у вашего приложения есть, просто перейдите на старую версию
-Если у вас есть какие-либо модули, у которых также есть момент.js в зависимостях, приведенное выше вам не поможет, вам нужно изменить конфигурацию веб-пакета:
{...
разрешить: {
...
псевдоним: {
'момент $': 'момент / момент',
}
}
}

-Но если вы используете response-create-app (как я) и вам нужна рабочая сборка как можно скорее, единственный вариант для вас запустить 'npm eject', таким образом у вас будет доступ к конфигурации webpack и второй вариант будет доступен для вас.

Мне очень жаль, но здесь работал только метод @patsissons . https://github.com/moment/moment/issues/4216#issuecomment -335637520

Все еще

import moment from "moment"
import "moment/locale/fr"
moment.locale("fr")

но добавление в webpack

    resolve: {
      alias: {
        'moment$': 'moment/moment',
      }
    },

По какой-то причине yarn проигнорировал мои настройки "разрешений" из package.json.
Хакерский способ исправить это, если вы используете моментный часовой пояс, - отредактировать yarn.lock

[email protected]:
  version "2.18.1"
  resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"

"moment@>= 2.9.0":
  version "2.18.1"
  resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"

Ждем fix 2.19.1 ....

Может ли кто-нибудь описать, в чем здесь настоящая проблема? Просто webpack не идентифицирует псевдоним require ()?

@TomMettam 2.19.0 указал webpack на код es6 в moment / src / moment, который не экспортирует тот же интерфейс, что и moment / moment.

Вдобавок к этому псевдоним require не позволяет webpack упаковывать все файлы, которые могут быть запрошены динамически. Импорт файлов локали вручную будет работать, за исключением того, что очевидный выбор импорта из момента / локали загрузит их в другой экземпляр момента, отличный от того, который вы фактически используете.

И если это все слишком просто, есть различия в поведении разных версий yarn / npm - я использую версию npm, которая использует любой экземпляр пакета, находящийся в папке node_modules корневого приложения, но другие версии делают сложнее изменить используемую упаковку.

Кто решил, что изменение сигнатуры экспорта в минорной версии - хорошая идея?

Обратите внимание, что это также нарушает работу сторонних библиотек, полагающихся на момент.

+1

Это неприемлемо для небольшого обновления.

Я понимаю идею, но, пожалуйста, будьте строже к semver.

@darkalor это не было преднамеренным - рассматриваемая экспортная подпись существенно отличается только в ограниченном наборе обстоятельств - вроде вещей, которые, кажется, работают нормально, пока не станут доступны большому количеству пользователей.

@darkalor @kud - Регрессии случаются. Пожалуйста, постарайтесь быть конструктивным; все понимают, что этого не должно было случиться, и разглагольствования никому не помогает.

@TomMettam Да, это случается, но когда это случается, вы можете справиться с этим, и, имея дело, я имею в виду, что вы можете обновить его как основное, а не второстепенное. Это все. Я никого не виню, я виню ситуацию, когда кто-то думает: «О, ладно, я могу обновить, так как это всего лишь мелочь», в данном случае это скорее неправильно. ;)

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

Я никого не оскорбляю, извините.

@kud не тогда, когда вам нужно выбрать номер версии, прежде чем вы узнаете, что существует регресс. Уровень сложности, необходимый для поддержки того количества сред, которое делает момент, впечатляет.

@tqc, но теперь ты это знаешь, вот в чем дело. Как ранее сказал @TomMettam , такое случается.

Возможно удаление и / или добавление тегов.

В любом случае я больше не буду здесь спамить, спасибо за обходной путь; Я добавил примечание для других людей, которые не следят за этой проблемой, в журнале изменений: https://gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603#gistcomment -2226628

Хорошего дня. :)

Я использую пряжу в качестве диспетчера пакетов. По какой-то причине мой файл yarn.lock не обновлялся, чтобы отразить изменение, которое я внес в свой файл package.json. мои настройки, как сказал @daniesy . Проблема заключалась в том, что часовой пояс в моем файле yarn.lock все еще зависел от текущей версии '^ 2.18.1'.

Чтобы исправить это, я очистил кеш пряжи :
yarn cache clean

Потом :
yarn install

Надеюсь, это должно повторно сгенерировать ваш файл yarn.lock с чем-то вроде:

[email protected]:
  version "0.5.13"
  resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.13.tgz#99ce5c7d827262eb0f1f702044177f60745d7b90"
  dependencies:
    moment ">= 2.9.0"

[email protected], [email protected], "moment@>= 2.9.0", moment@^2.17.1:
  version "2.18.1"
  resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 

В любом случае, просто проверьте, что ur yarn lock не пытается включить версию момента выше 2.18.1 в какой-либо модуль, особенно в часовом поясе и моменте.

Думаю, у нас есть исправление: https://github.com/moment/moment/pull/4232

Лучшая часть - я думаю, что это будет работать как для веб-пакетов, так и для нативной реакции - без печали!
Я тестировал в webpack, но будет ли кто-нибудь использовать собственный тест реакции? Обратите внимание, что вам нужно будет запустить grunt release, чтобы собрать файлы, прежде чем вы сможете протестировать с помощью привязки npm.

@maggiepint - Есть ли возможность того, что это

2.19.1 уже нет, попробуйте

У меня работает с Webkit.

Спасибо @ichernev и всем участникам!

@ichernev : 2.19.1 у меня работает.
Реагировать 16.
создать-реагировать-приложение.
Не выброшен

Момент загружается так:

import moment from 'moment'
import 'moment/locale/fr'

Спасибо за исправление. 👍

Просто запустил еще одну сборку VSTS с использованием angular-cli / webpack и повторно развернул в среде.

Все в норме

Спасибо

Я тоже могу подтвердить, что эта проблема решена для Angular-CLI v1.4.4. Спасибо!

работает с typescript / webpack / karma / phantomjs. Спасибо за исправление!

Чтобы заставить его работать, я просто включил файл локали до момента.
import 'moment/locale/de'; import moment from 'moment';
а позже сделал
moment.locale("de");

кажется, все еще существует в "версии": "2.22.2"?

Я тоже использую 2.22.2. проблема все еще существует

Я использую 2.22.2 и вижу ту же проблему.

Как указано выше. Та же проблема, та же версия.

Используем response native и видим эту ошибку для сборки выпуска:

09-04 13:47:38.684 26530 26554 E ReactNativeJS: Requiring unknown module "./locale/de".
09-04 13:47:38.693 26530 26555 E AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Process: com.integreat, PID: 26530
09-04 13:47:38.693 26530 26555 E AndroidRuntime: com.facebook.react.common.JavascriptException: Requiring unknown module "./locale/de"., stack:
09-04 13:47:38.693 26530 26555 E AndroidRuntime: c<strong i="6">@2</strong>:649
09-04 13:47:38.693 26530 26555 E AndroidRuntime: i<strong i="7">@2</strong>:394
09-04 13:47:38.693 26530 26555 E AndroidRuntime: t<strong i="8">@2</strong>:324
09-04 13:47:38.693 26530 26555 E AndroidRuntime: vt<strong i="9">@882</strong>:16755
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Mt<strong i="10">@882</strong>:17781
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Mn<strong i="11">@882</strong>:29014
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="12">@1006</strong>:1442
09-04 13:47:38.693 26530 26555 E AndroidRuntime: qn<strong i="13">@108</strong>:40634
09-04 13:47:38.693 26530 26555 E AndroidRuntime: tr<strong i="14">@108</strong>:46334
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Nr<strong i="15">@108</strong>:56528
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Ur<strong i="16">@108</strong>:56960
09-04 13:47:38.693 26530 26555 E AndroidRuntime: ui<strong i="17">@108</strong>:61804
09-04 13:47:38.693 26530 26555 E AndroidRuntime: oi<strong i="18">@108</strong>:61224
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Ue<strong i="19">@108</strong>:68050
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Ie<strong i="20">@108</strong>:14248
09-04 13:47:38.693 26530 26555 E AndroidRuntime: We<strong i="21">@108</strong>:14421
09-04 13:47:38.693 26530 26555 E AndroidRuntime: receiveTouches<strong i="22">@108</strong>:15235
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="23">@18</strong>:3352
09-04 13:47:38.693 26530 26555 E AndroidRuntime: <unknown><strong i="24">@18</strong>:935
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="25">@18</strong>:2621
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="26">@18</strong>:907

2.22.1 работает

не работает у меня все еще

Я тоже не могу заставить 2.18.1 работать на меня

2.22.1 ftw lol

Также заметил регресс в v2.22.2. Откат на 2.22.1 исправил эту проблему.

Всем привет,

Была такая же проблема (с использованием Webpack в Laravel). Это не идеально, но быстрое исправление, которое сработало для меня, - это копирование папки "locale" репозитория вместе с файлом moment.js или moment-with-locale.js.

Также сталкиваюсь с этим на v2.22.2 .

Чтобы заставить его работать, я просто включил файл локали до момента.
import 'moment/locale/de'; import moment from 'moment';
а позже сделал
moment.locale("de");

@ mj1856, уместно ли повторно открывать этот выпуск или нужно создать новый / новый? Я тоже это вижу снова. Откат 2.22.1 не исправить в моем случае , и я должен был использовать @patsissons исправить , чтобы сделать WebPack счастливым.

такой же

Я использовал allowSyntheticDefaultImports, как описано в документе здесь: https://momentjs.com/docs/#/use -it / typescript /, и он решил для меня ошибку Cannot find module "./locale" . Обратите внимание, что // @ts-ignore над импортом также требовалось в моей IDE.

тот же вопрос , moment:'2.18.1'

Это все еще рекомендуется: import moment from "moment/min/moment-with-locales"; ?

b / c Я получаю ту же (?) ошибку с [email protected] и CRA:

./node_modules/moment/min/moment-with-locales.js
Module not found: Can't resolve './locale' in '/...myproject/node_modules/moment/min'

Для всех этих прохожих в Интернете вот способ исправить это, если вы строите с накоплением:

Предполагая, что вы используете rollup-plugin-node-resolve :

import commonjs from "rollup-plugin-commonjs";
import nodeResolve from "rollup-plugin-node-resolve";

export default {
    // your config...
    plugins: [
        nodeResolve({
            mainFields: ["module", "jsnext:main", "main"],
            preferBuiltins: false,
        }),
        commonjs({
            include: "node_modules/**",
        }),
    ]
}

moment имеет запись package.json для jsnext:main которую мы можем здесь использовать. чтобы включить локали для нас в процессе сборки. Размер вашего пакета увеличится, но это предотвратит ошибки консоли 😅

У меня такая же проблема с моментом версии 2.24.0 в моем приложении React. Думаю, этот вопрос еще не решен.

У меня такая же проблема с моментом версии 2.24.0 в моем приложении React. Думаю, этот вопрос еще не решен.

Подтверждаю. «момент»: «2.24.0». 2.18.1 не решает проблему. Узел v12.16.0

То же самое здесь, с 2.24.0 для моего проекта Preact.

Все еще сталкиваюсь с этой проблемой, пожалуйста, помогите !!

Для меня сломано: "moment": "^ 2.24.0" (разрешение до 2.25.0)
Не нарушено: "момент": "2.24.0"

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

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

Используйте "moment": "2.24.0" и, как предлагает @rilyu , используйте разрешение. Работал у меня.

Возврат к «2.24.0» и удаление «^» сработали для меня. Похоже, их последняя версия была выпущена вчера вечером и теперь ее сбрасывают.

Возникла проблема с "moment": "^2.24.0", .
Uncaught Error: Cannot find module './locale' at

Та же проблема. Решено с помощью решения

Та же проблема. Решено с помощью решения

Решена проблема с решением @enewhuis и @rilyu. Спасибо.

Та же проблема. @enewhuis спасает

Для меня сломано: "moment": "^ 2.24.0" (разрешение до 2.25.0)
Не нарушено: "момент": "2.24.0"

Спасибо, чувак, я весь день борюсь с этим

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

До:

    "moment-timezone": "^0.5.28",

После:

    "moment": "2.24.0",
    "moment-timezone": "^0.5.28",

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

До:

    "moment-timezone": "^0.5.28",

После:

    "moment": "2.24.0",
    "moment-timezone": "^0.5.28",

Не работает у меня с -

    "moment": "2.24.0",
    "moment-timezone": "0.5.28",

Вышеупомянутое исправление не работает для меня. Узел v12.6.0, пряжа v1.22.4, react-scripts-ts

Работали для нас с

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

и

 "moment": "2.24.0",
  "moment-timezone": "0.5.28",

используя пряжу

Без блока разрешений не работало.

Да, я могу подтвердить, что добавление блока resolutions сработало для меня. Я понятия не имею, почему ...

Спасибо @mtogstad !

Решение @mtogstad работает!

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

@bodyfarmer, не могли бы вы записать шаги, как решить эту проблему?
У меня такая же проблема с приложением React.

@hasanmehmood В моем случае этого было достаточно, чтобы понизить

npm install [email protected]

Надеюсь, это сработает и для вас.

Привет ребята!
Я столкнулся с той же проблемой в последние несколько часов, и, наконец, я решил ее, изменив версию момента.

В приведенных выше комментариях я увидел окончательное решение.

Причина:
_moment выпустил новую версию 17 часов назад с 2.24.0 на 2.25.0_

Решение:
Шаг 1: измените версии

  • "момент": "2.24.0",
  • "момент-часовой пояс": "^ 0.5.28",

Шаг 2: Если вы используете пряжу, добавьте разрешения в файл package.json следующим образом
"dependencies" {
"момент": "2.24.0",
"момент-часовой пояс": "^ 0.5.28"
},
"разрешения": {
"момент": "2.24.0"
},

Спасибо.

Спасибо, @jolalla , я сначала попробовал понизить версию, но у меня это не сработало. Наконец, добавление блока разрешений показало некоторую магию :)

Для других, кто сталкивается с аналогичной проблемой со своим приложением для реагирования. Они могут сделать следующие 2 шага, чтобы решить эту проблему.

В зависимостях замените
"moment": "^2.24.0",
с участием
"moment": "2.24.0",

И добавьте блок разрешений в package.json

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

Почему этот вопрос закрыт!?! ??!?

Хорошее время, чтобы переключиться на luxon, что я и сделал для одного проекта, который мало использовал момент.

Имея такую ​​же проблему
"разрешения": {
"момент": "2.24.0"
}
решить мою проблему.
Спасибо.

Что еще я могу попробовать? "moment": "2.24.0" и
"resolutions": { "moment": "2.24.0" }
не исправляют это для меня. Это для развертывания Heroku. Любые идеи приветствуются.

Если случайно у кого-то еще есть монорепозиторий (и / или он использует рабочие области в package.json), исправление «разрешений» для использования предыдущего выпуска 2.24.0 будет работать только в том случае, если оно применяется в файле package.json корневого уровня. В нашем случае нам пришлось сделать следующее:
{«Разрешения»: {«** / момент»: «2.24.0»}}.

По-настоящему надеюсь, что релиз 2.25 будет исправлен как можно скорее!

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

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

Я занимаюсь этим уже час. удаление ^ помогает.

Для людей, использующих приложение 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;
};

Спасибо, @jolalla , я сначала попробовал понизить версию, но у меня это не сработало. Наконец, добавление блока разрешений показало некоторую магию :)

Для других, кто сталкивается с аналогичной проблемой со своим приложением для реагирования. Они могут сделать следующие 2 шага, чтобы решить эту проблему.

В зависимостях замените
"moment": "^2.24.0",
с участием
"moment": "2.24.0",

И добавьте блок разрешений в package.json

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

Работает на меня. Спасибо

@hasanmehmood, у меня сработало, спасибо, чувак

Спасибо, @jolalla , я сначала попробовал понизить версию, но у меня это не сработало. Наконец, добавление блока разрешений показало некоторую магию :)

Для других, кто сталкивается с аналогичной проблемой со своим приложением для реагирования. Они могут сделать следующие 2 шага, чтобы решить эту проблему.

В зависимостях замените
"moment": "^2.24.0",
с участием
"moment": "2.24.0",

И добавьте блок разрешений в package.json

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

У меня тоже работает! Спасибо!! : D

Делал это часами в моем приложении angular 8 с npm.

  1. Я обновился с момента 2.17 на 2.24
  2. Я добавил разрешения, как указано выше - "devDependencies": {...},"resolutions": { "moment": "2.24.0" } в package.json
  3. Перешли на пряжу, выполнив следующие действия. rm -rf node_modules package-lock.json && yarn
    Большое спасибо, ребята

Я очень в отчаянии ... Я использую момент 2.25.1 и меняю "devDependencies": {...}, "resolution": {"moment": "2.25.1"}, как указано выше ... не работающий

я использую npm. Я новичок в React, где devDependencies?
я изменил это, но он все еще не работает
Capture

Я использую версию "2.25.1" и все еще происходит!

@ m4mariaoni - это потому, что вы установили без --save-dev , поэтому вы меняете правую часть.

Если вы все еще сталкиваетесь с этой проблемой после блокировки момента до 2.24.0, удалите папку момента из node_modules и переустановите свои пакеты с помощью npm install --save

Спасибо, @jolalla , я сначала попробовал понизить версию, но у меня это не сработало. Наконец, добавление блока разрешений показало некоторую магию :)

Для других, кто сталкивается с аналогичной проблемой со своим приложением для реагирования. Они могут сделать следующие 2 шага, чтобы решить эту проблему.

В зависимостях замените
"момент": "^ 2.24.0",
с участием
"момент": "2.24.0",

И добавьте блок разрешений в package.json

"разрешения": {
"момент": "2.24.0"
}

У меня тоже работает! Спасибо!! : D! думает!

Спасибо, @jolalla , я сначала попробовал понизить версию, но у меня это не сработало. Наконец, добавление блока разрешений показало некоторую магию :)

Для других, кто сталкивается с аналогичной проблемой со своим приложением для реагирования. Они могут сделать следующие 2 шага, чтобы решить эту проблему.

В зависимостях замените
"moment": "^2.24.0",
с участием
"moment": "2.24.0",

И добавьте блок разрешений в package.json

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

Замена

"moment": "^2.24.0",

с участием

"moment": "2.24.0",

работает на меня! Обычно,
rm -rf package-lock.json && node_modules

Несмотря на все вышеперечисленные меры, все равно не работает ...

Это расстраивает

Ранее созданные репозитории использовались в момент 2.24.0 с React, и он все еще работает, но установите момент 2.24.0 сейчас, не работает .... (я тоже пробовал все вышеперечисленные меры)

В чем причина?

Я полагаю, у вас может быть ^ 2.24.0 вместо 2.24.0 где-то в пакете. Json @ wlsdud2194?

Я этого не делаю, и ошибка продолжает появляться. Это странно

Текущая версия - 2.24.0 в package.json вместо ^2.24.0 , поскольку я ее установил.

Я выполнил этот процесс, одна из вышеперечисленных мер

  1. добавить блок разрешений
  2. удалите каталог node_modules и переустановите пакет из пряжи.

у меня работает, но не знаю почему работает ... 😂

Спасибо за проявленный интерес

Пришлось перейти на более раннюю версию с ^2.25.1 до 2.24.0 чтобы решить эту проблему.

Я этого не делаю, и ошибка продолжает появляться. Это странно

Попробуйте запустить npm ls moment чтобы узнать, использует ли еще какой-либо другой модуль момент.

И добавьте блок разрешений в package.json
"разрешения": {"момент": "2.24.0"}

удалите каталог node_modules и переустановите пакет из пряжи.

rm -rf пакет-lock.json && node_modules

Контакт: г-н Лю Тел .: 18908205973
Факс: 028-86676917
Эл. Почта: [email protected]
Название компании: Chengdu Shouzhi Technology Co., Ltd. Веб-сайт компании: www.szdma.com
Адрес: Здание Иньхай, № 162, Восточная дорога Биньцзян, Чэнду.


Chengdu Shouzhi Technology Co., Ltd. была основана в 2010 году. Это профессиональная компания по разработке программного обеспечения для малых и средних предприятий в Чэнду. Компания в основном обслуживает малые и средние предприятия. Она обеспечивает строительство локальной сети, веб-сайт. строительство, решения для настройки программного обеспечения и т. д., а также предоставляет ручные услуги. Полный набор услуг для компьютерного бизнеса. Компания придерживается принципа «честность, ориентированность на услуги», чтобы подчеркнуть имидж компании; прилагая неустанные усилия, мы предоставляем клиентам высококачественные услуги.

Мы получаем ошибку Webpack Error: Cannot find module "./locale" . В нашем проекте мы используем пакет «react-redux-i18n», который зависит от «react-i18nify» и, в свою очередь, зависит от «moment». Внутренне «момент» настроен на использование последней версии, которая вызывает эту ошибку.

npm

В зависимостях
"реагировать": "^ 16.8.1",
"момент": "2.24.0",
"момент-часовой пояс": "^ 0.5.28",
"свойства-момента-реакции": "^ 1.5.0",
"react-redux-i18n": "^ 1.9.3",
"react-redux": "^ 6.0.0",

Любая помощь будет принята с благодарностью.

Последний патч 2.25.3, похоже, исправил это, обновите версию momentjs до: "moment": "^2.25.3" в package.json
Удалите папку node_modules и запустите yarn install или npm install должны это сделать.

Для тех, кто потерял некоторую уверенность в моменте и не хочет, чтобы их приложения полностью отказались от этой проблемы, которая повторится снова в будущем - я без особых проблем переключил кодовую базу среднего размера на luxon.

Спасибо, народ ...

Я изменил версию на 24.0, добавил "разрешения": {"момент": "2.24.0"} и запустил npm install

Потом вроде снова заработало (кстати, работая с React).

Ваше здоровье!

Последний патч 2.25.3, похоже, исправил это, обновите версию momentjs до: "moment": "^2.25.3" в package.json
Удалите папку node_modules и запустите yarn install или npm install должны это сделать.

Спасибо @jasontll , у меня работает

Сегодня у меня ни одно из этих решений не помогло.

Делал это часами в моем приложении для реагирования
с npm.

1. I updated from moment  2.17 to 2.24

2. I added the resolutions as adviced above - `"devDependencies": {...},"resolutions": { "moment": "2.24.0"   }` to package.json

3. Changed to yarn by doing the following. `rm -rf node_modules package-lock.json && yarn`
   Thanks a lot guys

это тоже сработало для парней, спасибо большое :-)

Я тоже попадаю в эту беду. Я исправил это последней версией от "moment": "^2.26.0"

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