Moment: Error no detectado: no se puede encontrar el módulo './locale'

Creado en 1 may. 2020  ·  69Comentarios  ·  Fuente: moment/moment

Describe el error
Recibo este error en la consola de Chrome después de crear la versión optimizada de producción

Error no detectado: no se puede encontrar el módulo './locale'
en 2.d0944550.chunk.js: 1
en Module.(2.d0944550.chunk.js: 1)
en f ((índice): 1)
en Module.837 (main.091f08fc.chunk.js: 1)
en f ((índice): 1)
en Object.540 (main.091f08fc.chunk.js: 1)
en f ((índice): 1)
en a ((índice): 1)
en Array.e [como empujar] ((índice): 1)
en main.091f08fc.chunk.js: 1

Este es mi 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"
  }

Si construyo localmente con hilo para la versión de desarrollo, funciona

Reproducir
Pasos para reproducir el comportamiento:
Cree una aplicación con esos requisitos. Debería tener ese error en la consola.

Comportamiento esperado
Una descripción clara y concisa de lo que esperaba que sucediera.

Capturas de pantalla
Si corresponde, agregue capturas de pantalla para ayudar a explicar su problema.

Escritorio (complete la siguiente información):

  • SO: [p. Ej., IOS]
  • Navegador [p. Ej., Chrome, Safari]
  • Versión [por ejemplo, 22]

Smartphone (complete la siguiente información):

  • Dispositivo: [p. Ej., IPhone6]
  • SO: [p. Ej., IOS8.1]
  • Navegador [por ejemplo, navegador estándar, safari]
  • Versión [por ejemplo, 22]

Entorno específico de un momento

  • La configuración de la zona horaria de la máquina en la que se está ejecutando el código
  • La hora y la fecha en que se ejecutó el código.
  • Otras bibliotecas en uso (TypeScript, Immutable.js, etc.)

Ejecute el siguiente código en su entorno e incluya el resultado:

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

Contexto adicional
Agregue aquí cualquier otro contexto sobre el problema.

Comentario más útil

Mismo problema,

Se corrigió eliminando el signo de carret antes del número de versión. La entrada Package.json ahora se ve así:
"momento": "2.24.0"

Parece un error de la nueva versión.

Todos 69 comentarios

Exactamente. Acabo de enfrentar este error y vi que lanzaron una nueva versión hace horas.

si usa hilo, agregue el bloque de resoluciones a package.json para anular las versiones de la subdependencia, funciona para mí

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

¡Aquí igual!

Además, 2.24.0 todavía tiene la advertencia: ./node_modules/chart.js/node_modules/moment/src/lib/locale/locales.js Critical dependency: the request of a dependency is an expression

Solo reproduce este problema

¡Lo mismo también!

  • 1

Mismo problema,

Se corrigió eliminando el signo de carret antes del número de versión. La entrada Package.json ahora se ve así:
"momento": "2.24.0"

Parece un error de la nueva versión.

Esta noche instalé Jest y creó un problema y se me indicó que eliminara los archivos yarn.lock y package.lock junto con mi carpeta de módulos y que instalara yarn install o npm install. Cuando hice la instalación de yarn, recibí el error mencionado en este hilo: la página que apareció decía que el error era un error de paquete web y apuntaba a la zona horaria del momento. Cuando eliminé mis archivos de bloqueo, la carpeta del módulo y lo reinstalé usando npm install (en lugar de instalar hilo), todo funcionó En resumen, cuando usé un comando de administrador de paquetes diferente, cambió el resultado.

Elimine ^ en package.json de esta manera me funcionó 👍

extraño incidente de este tipo ocurrió a principios de esta semana debido a la biblioteca is-promise, también hay un problema como ^ es necesario eliminarlo. Creo que la gente ahora lo hará más o menos para toda la versión estricta de package.json en lugar de ^

Intenté eliminar el signo de intercalación de package.json y ejecutar + rm -rf node_modules + yarn y sigo teniendo este problema al ejecutar el paquete web

Estoy usando la zona horaria de momento y su valor predeterminado es 2.25. quitar el caret no hace ninguna diferencia

¡Aquí igual!

Esto funciona para mí, estoy usando create-react-app.
// en 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/)
...
]

Parece que hay un problema con su última versión. Tuve que volver a "2.24.0" sin el "^" y eso permitió que mis sitios se construyeran.

El mismo problema aquí con la versión de momento 2.25.0 en uno de mis proyectos basados ​​en 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

Con el momento 2.24.0 no existe tal problema.

¿Alguien puede proporcionar un ejemplo mínimo (no) funcional para que se pueda investigar?

Tuve que volver a "2.24.0", el momento no puedo encontrar './locale'

esto funciona perfectamente para mí: https://github.com/moment/moment/issues/4216#issuecomment -622453248

¿Alguien puede proporcionar un ejemplo mínimo (no) funcional para que se pueda investigar?

Hola @ichernev , por favor, encuentre adjunto. Simplemente ejecute npm install y npm start :)

número5484.zip

El manejo de require se revirtió al comportamiento 2.24.0.

Corregido en 2.25.1.

Actualicé a la versión 2.25.1 , pero sigo recibiendo el error.

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

Pero quizás estoy haciendo algo mal. ¿Alguien puede confirmar que este error ha desaparecido en 2.25.1?

El mismo problema para mí y la zona horaria del momento. He intentado forzar 2.24.0, pero sigue siendo el mismo problema, ya que supongo que la zona horaria utiliza la última versión.

Sigo recibiendo el error

@ strange1120 es [email protected]?
Si usa hilo, intente yarn why moment para mostrar las deps instaladas.

@ichernev Lo siento, puedo confirmar que 2.25.1 arroja el mismo error. Usando la aplicación que cargué anteriormente, y un node_modules / package-lock.json limpio, puedo ver que la versión es 2.25.1 pero aún lanza.

¿Por qué se cierran estos problemas ... esto está causando estragos?

Sí yo también. Pensé que era mi Docker

Sugerencia eliminada: no vale la pena en 2020 :( @ichernev ¿ alguna actualización todavía?

Para las personas que usan create-react-app y que no quieren expulsar CRA, pueden instalar:

Luego cree un config-overrides.js en el directorio raíz de su proyecto para anularlo aún más.

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

Edite su package.json:

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

Debido a que uso el diseño de hormigas, mi config-overrides.js ve así:

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",
  })
);

Pero el tuyo será más simple, algo como esto creo:

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;
};

Para las personas que tienen acceso a Webpack, pueden agregar la siguiente entrada a su matriz de complementos en su configuración de 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",
      });
    })

Hasta que se publique la corrección, como lo mencionó @saadzr , puede simplemente asignar un momento a la versión "2.24.0". Quitar carret: "^".

Para quien no sepa hacerlo. Busque los paquetes que usan el momento: npm ls moment . Probablemente verá:

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

Entonces, dentro de antd/package.json y rc-picker/package.json en dependencies :

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

Y ejecuta npm i DOS VECES. No sé por qué necesita dos veces, pero solo funciona después de dos veces.

@ talgat-ruby Esto implica editar la carpeta node_modules que no se inserta en los repositorios, las personas que clonen el proyecto tendrán que hacerlo cada vez, creo que esta no es una buena solución.
Por ejemplo, trabajamos con varios colaboradores y no podemos decirles que hagan esto cada vez que clonen un repositorio.
La mejor manera de solucionar este problema hasta que se publique una solución es configurar Webpack como se mencionó anteriormente.

@nathanagez esta es una solución temporal. El equipo de Antd probablemente lanzará una solución oficial pronto. Y sí, tienes razón, no puedes confiar en ello.

@ talgat-ruby Le expliqué cómo configurar Webpack, ver arriba, para que pueda implementar la solución en su repositorio.

Puedo confirmar que la sugerencia de @ talgat-ruby solucionó el problema por mí.

@rilyu ¡ Tu sugerencia funcionó para mí!

Estoy usando moment-timezone y no especifiqué una versión por el momento.
Parece que, durante la instalación, yearn instala la última versión de moment como una dependencia -> [email protected] y no es compatible.

De hecho agregando
"resoluciones": {"momento": "2.24.0"}
resuelve el problema.

muchas gracias

¿Alguna noticia de los desarrolladores?

Obteniendo este error usando MaterialUI DatePicker. Intenté retroceder manualmente a 2.24.0 pero no tuve suerte. Espero que esto se resuelva pronto. Supongo que usaré el tipo nativo de TextField = "fecha" por ahora.

Mismo problema,

Se corrigió eliminando el signo de carret antes del número de versión. La entrada Package.json ahora se ve así:
"momento": "2.24.0"

Parece un error de la nueva versión.

¡Esto funciona para mí! Tnx

Tengo el mismo problema, eliminé la carpeta node_modules, luego cambié la versión del momento a 2.24.0 y luego volví a instalar, el problema persiste.
Cuando verifico que rc-calendar está usando 2.25.1 algo como esto. Intenté editar allí e hice yarn install todavía el problema persiste. Por favor ayúdenme Estoy trabajando en un proyecto importante

@faizhameed Intenta eliminar la carpeta node-modules.
Elimina también tu package-lock.json (yarn.lock también si estás usando hilo).

Agregue esto a su package.json después de las dependencias: {
...
},
resoluciones: {"moment": "2.24.0"}

Debería forzar a rc-datepicker a usar el momento 2.24

El mismo problema aquí después de actualizar a 2.25.0 y 2.25.1.
La única solución que funcionó para mí es degradar a 2.24.0

Lamentablemente tengo el mismo problema. Por alguna razón, la solución en package.json no me funciona.
resolutions: { "moment": "2.24.0" }

Por ahora voy a degradar como @pcarballeda

Para mí, arreglar la versión en "moment": "2.24.0" y agregar resolutions: { "moment": "2.24.0" } resolvió temporalmente el problema.

Módulo no encontrado: Error: No se puede resolver './locale' en 'D: \ Descargas \ Telegram \ ildamnode_modules \ rc-pickernode_modules \ momentosrc \ lib \ locale'

¿Cómo se puede superar esto?

"momento": "2.24.0"

"dependencias": {
"antd": "^ 4.2.0",
"axios": "^ 0.19.2",
"nombres de clase": "^ 2.2.6",
"cross-env": "^ 7.0.2",
"dva": "^ 2.4.1",
"dva-model-extend": "^ 0.1.2",
"menos-vars-a-js": "^ 1.3.0",
"libphonenumber-js": "^ 1.7.50",
"lodash": "^ 4.17.15",
"lodash.clonedeep": "^ 4.5.0",
"momento": "2.24.0",
"nprogress": "^ 0.2.0",
"ruta-a-regexp": "^ 6.1.0",
"prop-types": "^ 15.7.2",
"query-string": "^ 6.12.1",
"reaccionar": "^ 16.13.1",
"react-currency-format": "^ 1.0.0",
"react-custom-scrollbars": "^ 4.2.1",
"react-dom": "^ 16.13.1",
"react-helmet": "^ 6.0.0",
"react-perfect-scrollbar": "^ 1.5.8",
"svg-sprite-loader": "^ 4.2.1",
"umi-plugin-locale": "^ 2.11.5"
},

La degradación a 2.24.0 funcionó para mí. Elimina el ^ con 2.24.0.
También actualizó manualmente todas las dependencias de momento a 2.24.0 en package-lock.json.

Teniendo el problema con la 2.24, tratando de poner las "resoluciones" ... pero no actualicé a la 2.25, ¿qué pasa? Estaba funcionando el jueves.

La degradación a 2.24.0 funcionó para mí. Elimina el ^ con 2.24.0.
También actualizó manualmente todas las dependencias de momento a 2.24.0 en package-lock.json.

Gracias trabajado! Hay un problema con Yarn. Trabajó con Npm

Hasta que se publique la corrección, como lo mencionó @saadzr , puede simplemente asignar un momento a la versión "2.24.0". Quitar carret: "^".

Para quien no sepa hacerlo. Busque los paquetes que usan el momento: npm ls moment . Probablemente verá:

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

Entonces, dentro de antd/package.json y rc-picker/package.json en dependencies :

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

Y ejecuta npm i DOS VECES. No sé por qué necesita dos veces, pero solo funciona después de dos veces.

¡Laboral! <3

yarn remove + yarn add moment versión instalada 2.25.2 que se construye bien para mí

yarn remove + yarn add moment versión instalada 2.25.2 que se construye bien para mí

¿No sería eso un problema en esta versión?

@ Shakxzod-Namazbaev Creo que el problema original fue con la versión 2.25.0, algunas personas informaron que ocurre el mismo problema en 2.25.1, otras han mencionado que la degradación a 2.24 les funciona. En mi caso, la versión 2.25.2 parece funcionar, por lo que tal vez no sea necesario degradar

@ Shakxzod-Namazbaev Creo que el problema original fue con la versión 2.25.0, algunas personas informaron que ocurre el mismo problema en 2.25.1, otras han mencionado que la degradación a 2.24 les funciona. En mi caso, la versión 2.25.2 parece funcionar, por lo que tal vez no sea necesario degradar

Así que no tienes ningún problema con la versión 2.25.2 en este momento, ¿verdad?

@ Shakxzod-Namazbaev exactamente, 2.25.2 funciona bien para mí.

Puedo confirmar: el momento 2.25.2 también funciona para mí.

Creo que 2.25.2 está bien en forma independiente pero en forma de paquete administrado, todavía está roto (paquete web en mi caso donde el momento es una dependencia de la zona horaria del momento).

2.24.0 sigue siendo el indicado para las personas que utilizan webpack y otros paquetes que dependen del momento.

ver. 2.25.2 me funciona en forma de paquete administrado - paquete web configurado en un proyecto basado en gatsby (ver. 2.25.0 no lo hizo):

líneas package.json relevantes:

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

Sin embargo, no estoy usando moment-timezone .

¡Qué loco que este informe de problemas todavía esté cerrado con tantas personas afectadas y la única "solución" hasta ahora es cambiar a una versión anterior!?!?!

@ichernev ¡ Gracias! ¡Actualizar a 2.25.2 me soluciona este problema!

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

está bien. Alabé demasiado pronto. Aunque con el momento ver. 2.25.2 webpack puede producir un paquete funcional sin errores, pero la importación de la configuración regional ya no funciona; parece que se está ignorando (¿quizás esto tiene algo que ver con efectos secundarios / sacudidas de árboles ?).

P.ej:

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"))

Con la versión 2.25.2 salida es 04 May 2020 16:38:15 , que es incorrecta, como debería ser
04 maja 2020 16:38:58 .

Entonces, la versión 2.24.0 sigue siendo la última en funcionamiento.

Enfrenté el mismo problema, eliminar la zanahoria de la versión solucionó esto.

Así en su archivo package.json --- "momento": "2.24.0"

Versión: 2.24.0

Bueno, estaba probando localmente, y realmente no puedo decir por qué, pero si es una propiedad package.json module entonces está roto. Si solo hay jsnext:main , está funcionando. Esto se relaciona con los archivos de configuración regional que no se cargan correctamente, mientras aún están incluidos en el paquete.

Entonces, esta propiedad de módulo "moderno" que reemplaza a jsnext: main no es solo un cambio de nombre o un nombre alternativo. Tiene alguna agenda oculta que no está bien publicitada.

2.25.3 está disponible sin module .

@ichernev - ¡gracias! Puedo confirmar que la versión 2.25.3 funciona (el paquete web puede producir paquetes sin errores e incluir / configurar la configuración regional funciona como se esperaba).

Correcciones en 2.25.3 para mí.

Mismo problema,

Se corrigió eliminando el signo de carret antes del número de versión. La entrada Package.json ahora se ve así:
"momento": "2.24.0"

Parece un error de la nueva versión.

¡Después de eso funciona!

¿Fue útil esta página
0 / 5 - 0 calificaciones