Moment: Error de paquete web: no se puede encontrar el módulo "./locale" después de actualizar a 2.19.0

Creado en 10 oct. 2017  ·  149Comentarios  ·  Fuente: moment/moment

Editar: si configura su dependencia en 2.18.1, todo estará bien.
Edición 2: establezca "moment": "2.18.1" en su package.json
Edición 3: creemos que esto está arreglado.

Hola.
Usando create-react-app. Después de actualizar el momento a 2.19.0, tengo este error al cargar:

Error: no se puede encontrar el módulo "./locale"
-> Se colapsaron 9 marcos de pila.
./src/utils/Utils.js
src / utils / Utils.js: 1

1 | importar momento de 'momento'

Comentario más útil

@patricksteenks : sí. Arregle esto en su package.json "moment": "2.18.1"

Todos 149 comentarios

Tengo lo mismo, confirmando este error.

aquí igual

Puede confirmar:

This relative module was not found:

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

Bien, veremos esto, pero no será muy rápido.

Cambiamos el nombre de la función require, si alguien puede ver / investigar si está vinculada a:

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

El mismo problema aqui. ¿La degradación solucionaría el problema?

Lo mismo aquí, rompí varias aplicaciones en las que trabajo.

@patricksteenks : sí. Arregle esto en su package.json "moment": "2.18.1"

@ichernev oye, pero estoy usando la configuración regional sin importar. Simplemente use import moment from 'moment' y use así moment(date).locale('uk').format('ddd') . Según tengo entendido, cambió la importación a locale . ¿Cómo puedo solucionar esto en mi caso?

El mismo problema en el proyecto construido con Angular-CLI

Confirmado.

Las compilaciones de VueJS 2 Webpack también se vieron afectadas. La corrección temporal es como sugirió GautierT (rebajar momentjs)

package.json (problema con el depósito de zona horaria de momento en el momento 2.19)

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

package.json (problema en general)

    "moment": "2.18.1"

¡Puedo confirmar que esto también está sucediendo!

Puedo confirmar.
package.json

"moment": "2.18.1"

@renedx solo esta línea suficiente

Lo mismo en una aplicación de Angular 4.
Recién degradado a 2.18.1 (número de versión estricto en package.json)

También me golpeó esto. Sospecho que el paquete web está haciendo algo de magia para reconocer el "requisito" dinámico, y ya no puede reconocerlo con el nuevo nombre y, por lo tanto, las configuraciones regionales nunca se incluyen en el paquete.

(Por cierto, toda esta situación se parece mucho a exactamente para qué sirven las importaciones dinámicas de ES6. Podemos soñar :-)

Yo uso en el paquete web de esta página.

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

Ahora quítalo

Y en requerir

const moment = require('moment');

Ahora

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

Estrictamente hablando, creo que la conexión Angular se debe simplemente a que la mayoría de los proyectos Angular usan Angular-CLI, que internamente usa Webpack. Pero puede estar relacionado con alguna configuración específica de Webpack en esa pila.
Sin embargo, parece ser un problema de agrupación bastante general.

¡Arrepiéntete, arrepiéntete, el fin del mundo está aquí!

Aquí igual.

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

Lo mismo aquí: lo arreglé con una función de hilo para sobrecargar la configuración predeterminada de un paquete:

coloque esto en su package.json principal (adapte "moment-timezone" al nombre del paquete que carga el momento si no carga directamente el momento):

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

como un asteroide de 10 km ... lo mismo aquí ...

¿Cuál es la ETA para arreglar?

Bien, aquí es donde estamos:

  • Si configura su dependencia en 2.18.1, todo estará bien.
  • Este es un problema con https://github.com/moment/moment/pull/4213
  • Me involucré tanto con el paquete web como con los equipos nativos de Reacción para hablar sobre qué solución funcionará para todas las partes.
  • Debido a que establecer la dependencia en 2.18.1 proporciona una mitigación fácil, en este momento no quiero retroceder. En su lugar, me gustaría que esperar en la retroalimentación de webpack y reaccionar nativo para ver si podemos llegar a un acuerdo acerca de qué hacer que se mueva hacia adelante esta situación. Por esa razón, no tengo una ETA fijada.
  • Puede encontrar un MCVE aquí: https://github.com/mj1856/moment-webpack-test

Error confirmado al ejecutar la aplicación react creada con la CLI create-react-app.

Resolvió este momento de degradación y la versión de zona horaria monetaria.

npm install [email protected] como una solución temporal para que no tenga que lidiar con la actualización de package.json varias veces. Esto probablemente se solucionará pronto, entonces puede hacer npm i .

@aheissenberger esto me salvó la vida, tuve el mismo problema con rc-calendar, puedo confirmar que funciona para yarn 1.2.0.

Mismo problema webpack 3.6.0 + momento 2.19.0. Funcionó bien con 2.18.1

Otros pueden tener mi mismo problema: aunque no actualicé a 2.19.0, en mi package.json tenía ^2.18.1 . Lo cambié a 2.18.1 sin ^ , y ahora no instalará nada superior a 2.18.1 hasta que sepamos que 2.19.x es seguro

@ichernev parece muy probable que el cambio de nombre de 'require' esté causando estas roturas generalizadas. Sospecho que cuando necesita módulos que usan una referencia como esa, significa que el paquete web no puede detectar la importación, ya que usa análisis estático AST para determinar las dependencias.

¿Quizás podría proporcionar algunos detalles del problema de React Native que estaba solucionando, ya que podría haber una mejor manera de solucionar el problema original?

En nuestro proyecto estamos usando yarn 1.0.2 , create-react-app , y estos departamentos en 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"
 }

Aunque estamos usando "moment": "2.18.1" , todavía estamos obteniendo
screen shot 2017-10-10 at 3 53 43 pm

¿Existe una solución alternativa al problema del hilo?

@ggsjyoon : Tuve una situación similar (sigo recibiendo el error) hasta que recordé que necesitarás actualizar uno de los archivos que WebPack está viendo para que se regenere y elimine cualquier versión almacenada en caché.

+1

@ggsjyoon, puede haber un requisito adicional de uno de sus paquetes (por ejemplo, momento-zona horaria); puede usar mi consejo https://github.com/moment/moment/issues/4216#issuecomment -335489518 para arreglar esto con hilo

Terminé superando esto cambiando:

import * as moment from 'moment';

a:

import * as moment from 'moment/moment';

+1

@morrisonbrett Esto funciona. Gracias

Confirmar la sugerencia de @GautierT funciona para mí.

@maggiepint Al ver lo que funcionó para @morrisonbrett , creo que el número 4213 puede no ser el problema. 2.19 introdujo otro cambio nuevo, el campo del módulo en package.json, es decir, anteriormente el paquete web estaba usando la versión transpilada.

Activar ES6 para react native es lo que causó la mayoría de los problemas al bloquear # 4187, y # 3904 (en la rama de desarrollo solo durante bastante tiempo) hizo el mismo cambio para todos los usuarios de paquetes web.

@tqc : probablemente sean ambos. @thelarkinn ya confirmó que a webpack no le gustaría que la dinámica requiera.

El mismo problema aquí, ¿alguna actualización?

@maggiepint Sí, justo después de escribir ese comentario me di cuenta de que el error al final del hilo no era exactamente el mismo que al principio. El lado ES6 de las cosas podría arreglarse con algo como module.exports = require(‘moment’).default , pero no estoy seguro de si eso permitirá la agitación del árbol, y a la armonía de nodos no le gusta mezclar importación con require.

resuelto mediante el alias de paquete web:

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

¿Alguien puede averiguar todos los bits de 2.19 que rompieron el paquete web, proponer un PR mínimo (basado en 2.19.0), que revierte las piezas "malas", y consideraremos fusionarlo para 2.19.1?

Decir "yo también" por mil veces no trae mucho a la mesa.

La solución de @morrisonbrett funciona import * as moment from 'moment/moment';

Puedo confirmar este mismo problema con Angular-CLI v1.4.4. Inicialmente me sorprendió cuando vi el error que involucraba momentjs ya que mi proyecto no lo usa, pero después de investigar, rastreé su inyección hasta WebPack.

Aquí está mi mensaje de advertencia cuando construyo:

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

También probé el método import * as moment from 'moment/moment'; pero no tuve suerte en mi caso.

Hola @kud , @AleshaOleg , si todavía estás intentando importar configuraciones regionales:
en vez de:
import 'moment/locale/*
tratar:
import 'moment/src/locale/*'

He estado luchando con el mismo problema aquí ...
–––
@AleshaOleg : en su caso de uso, creo que podría ser:
import moment from 'moment'
import 'moment/src/locale/uk'
y luego simplemente llame a moment(date).format('ddd')

¡Gracias @dialnco !

Terminé lidiando con este problema, al actualizar a 2.19.0 , deshabilitando completamente el código que intenta cargar configuraciones regionales.

({
  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
    }
  }
})

Luego agregué manualmente import 'moment/src/locale/ja' , import 'moment/src/locale/pt-br' , et al según lo requiriera mi aplicación, en lugar de cargar todas las configuraciones regionales. Si eres creativo, puedes usar import() s dinámicos en su lugar para cargar solo el idioma que tu aplicación necesita.

Es muy importante que, si hace esto, no haga import 'moment/locale/foo' , sino import 'moment/src/locale/foo' . Debido a cómo los archivos de configuración regional intentan referirse a moment sí, en su lugar, incluirán una segunda copia de moment (esta vez la compilación UMD en lugar de la compilación ESM) y eso, en Turn, carga todas las configuraciones regionales nuevamente.

Espero que esto ayude a alguien (opciones 1 y 2 del comentario anterior, gracias a @patsissons ):
-Si no tiene ningún módulo que cargue moment.js, pero su aplicación sí, simplemente muévase a la versión anterior
-Si tiene algún módulo que también tenga moment.js en dependencias, lo anterior no le ayudará, debe modificar la configuración de su paquete web:
{...
resolver: {
...
alias: {
'moment $': 'momento / momento',
}
}
}

-Pero si está usando react-create-app (como yo) y necesita tener una compilación funcional lo antes posible, la única opción para que ejecute 'npm eject', de esta manera tendrá acceso a la configuración del paquete web y la segunda estará disponible para usted.

Así que lo siento, pero el único método que funciona aquí fue el de @patsissons . https://github.com/moment/moment/issues/4216#issuecomment -335637520

Aún

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

pero agregando en el paquete web

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

Por alguna razón, yarn ignoró mi configuración de "resoluciones" de package.json.
Una forma engañosa de solucionarlo, si está utilizando moment-timezone es editar el 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"

Esperamos arreglar 2.19.1 ....

¿Alguien podría describir cuál es el problema real aquí? ¿Es simplemente que el paquete web no identifica el require () con alias?

@TomMettam 2.19.0 apuntó el paquete web al código es6 en moment / src / moment, que no exporta la misma interfaz que moment / moment.

Además de eso, el requerimiento con alias evita que el paquete web empaque todos los archivos que posiblemente podrían solicitarse dinámicamente. Importar los archivos de configuración regional manualmente funcionaría, excepto que la opción obvia de importar desde el momento / configuración regional los cargará en una instancia de momento diferente a la que está utilizando realmente.

Y si eso es demasiado simple, existen diferencias en el comportamiento de las diferentes versiones de yarn / npm; resulta que estoy usando una versión de npm que usa cualquier instancia del paquete que se encuentre en la carpeta raíz node_modules de la aplicación, pero otras versiones hacen es más difícil anular el paquete utilizado.

¿Quién decidió que cambiar la firma de exportación en una versión secundaria es una buena idea?

Tenga en cuenta que esto también rompe las bibliotecas de terceros que dependen del momento

+1

No es aceptable para una actualización menor.

Entiendo la idea detrás, pero por favor, sea más estricto con semver.

@darkalor no fue intencional: la firma de exportación en cuestión solo es materialmente diferente en un conjunto limitado de circunstancias, el tipo de cosas que parecen funcionar bien hasta que se exponen a una gran cantidad de usuarios.

@darkalor @kud - Las regresiones ocurren. Intente ser constructivo; todo el mundo es consciente de que esto no debería haber sucedido y despotricar no ayuda a nadie.

@TomMettam Sí, sucede, pero cuando sucede, puedes lidiar con eso y, al tratar, me refiero a que puedes actualizarlo como mayor, no menor. Eso es todo. No culpo a nadie, culpo a la situación de que si alguien piensa "bueno, puedo actualizar, ya que es solo un poco", está bastante mal en este caso. ;)

Agradezco todo el trabajo realizado en el momento, pero solo hablo de la situación inestable.

No ofendo a nadie, lo siento.

@kud no cuando tiene que elegir el número de versión antes de saber que existe la regresión. El nivel de complejidad requerido para soportar la cantidad de entornos que hace el momento es algo bastante impresionante.

@tqc pero ahora lo sabes, esa es la @TomMettam , sucede.

Es posible eliminar y / o agregar etiquetas.

De todos modos, no volveré a enviar spam aquí, gracias por la solución alternativa; Agregué una nota para otras personas que no siguen este problema, en el registro de cambios: https://gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603#gistcomment -2226628

Qué tengas un lindo día. :)

Estoy usando hilo como mi administrador de paquetes. Por alguna razón, mi archivo yarn.lock no se actualizaba para reflejar el cambio que hice en mi archivo package.json. mi configuración a como dijo @daniesy . El problema era momento-zona horaria en mi archivo yarn.lock todavía dependía de la versión de momento '^ 2.18.1'.

Para solucionarlo, ejecuté un caché de hilo limpio :
yarn cache clean

Entonces :
yarn install

Con suerte, esto debería volver a generar su archivo yarn.lock con algo como:

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

De cualquier manera, simplemente, verifique que su bloqueo de hilo no esté tratando de incluir una versión de momento superior a 2.18.1 en ningún módulo, especialmente en la zona horaria y el momento.

Creo que tenemos una solución: https://github.com/moment/moment/pull/4232

La mejor parte: creo que esto funcionará tanto para el paquete web como para el nativo de reacción, ¡sin tristeza!
Lo probé en el paquete web, pero ¿alguien usaría la prueba nativa de reacción? Tenga en cuenta que deberá ejecutar grunt release para que los archivos se compilen antes de poder realizar la prueba utilizando un enlace npm.

@maggiepint : ¿alguna posibilidad de que eso funcione también para Angular-CLI?

2.19.1 está fuera, pruébalo

Me funciona con Webkit.

¡Gracias @ichernev y todos los involucrados!

@ichernev : funciona para mí.
Reaccionar 16.
crear-reaccionar-aplicación.
No expulsado

Momento cargado así:

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

Gracias por la solución. 👍

Acabo de activar otra compilación de VSTS con angular-cli / webpack y volver a implementarla en el entorno

Todo vuelve a la normalidad

Gracias

Yo también puedo confirmar que este problema está resuelto para Angular-CLI v1.4.4. ¡Gracias!

funciona con mecanografiado / webpack / karma / phantomjs. ¡Gracias por la solución!

Para que funcione, solo incluí el archivo de configuración regional antes del momento.
import 'moment/locale/de'; import moment from 'moment';
y luego lo hizo
moment.locale("de");

parece que todavía existe en la "versión": "2.22.2"?

También estoy usando 2.22.2. el problema aún existe

Estoy usando 2.22.2 y veo el mismo problema.

Como anteriormente. Mismo problema, misma versión.

Usando react native y viendo este error para una versión de lanzamiento:

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 obras

todavía no funciona para mí

tampoco puedo conseguir que 2.18.1 funcione para mí

2.22.1 ftw jajaja

También noté una regresión en v2.22.2. Regresar a 2.22.1 lo arregló para mí.

Hola a todos,

Tuve el mismo problema (usando Webpack en Laravel). Esto no es ideal, pero una solución rápida que funcionó para mí es copiar la carpeta "locale" del repositorio junto con el archivo moment.js o moment-with-locale.js.

También se encuentra con esto en v2.22.2 .

Para que funcione, solo incluí el archivo de configuración regional antes del momento.
import 'moment/locale/de'; import moment from 'moment';
y luego lo hizo
moment.locale("de");

@ mj1856 ¿ es apropiado volver a abrir este problema o deberíamos crear uno nuevo? También estoy viendo esto de nuevo. Revertir a 2.22.1 no lo solucionó en mi caso y tuve que usar la corrección de @patsissons para hacer feliz a Webpack nuevamente.

mismo

Usé allowSyntheticDefaultImports como se explica en el documento aquí: https://momentjs.com/docs/#/use -it / typescript / y me resolvió el error Cannot find module "./locale" . Tenga en cuenta que // @ts-ignore encima de la importación también se necesitaba en mi IDE.

misma pregunta, moment:'2.18.1'

¿Todavía se recomienda esto: import moment from "moment/min/moment-with-locales"; ?

b / c termino con el mismo (?) error con [email protected] y CRA:

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

Para todos esos transeúntes de Internet, aquí hay una manera de solucionarlo si compila con un paquete acumulativo:

Suponiendo que está usando 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 tiene una entrada package.json para jsnext:main que podemos aprovechar aquí. para incluir las configuraciones regionales para nosotros durante el proceso de compilación. El tamaño de su paquete aumentará, pero evitará los errores de la consola 😅

Tengo este mismo problema con la versión 2.24.0 del momento en mi aplicación React. Supongo que este problema aún no se ha resuelto.

Tengo este mismo problema con la versión 2.24.0 del momento en mi aplicación React. Supongo que este problema aún no se ha resuelto.

Confirmando. "momento": "2.24.0". 2.18.1 no soluciona el problema. Nodo v12.16.0

Lo mismo aquí, con 2.24.0 para mi proyecto Preact.

¡Sigo teniendo este problema, por favor ayuda!

Para mí, roto: "momento": "^ 2.24.0" (se resuelve en 2.25.0)
No roto: "momento": "2.24.0"

si usa hilo, agregue el bloque de resoluciones para anular las versiones de la subdependencia:

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

Use "moment": "2.24.0" y, como sugirió @rilyu , use la resolución. Trabajó para mi.

Volver a "2.24.0" y eliminar el "^" funcionó para mí. Parece que su última versión salió a la luz anoche y la está desechando.

Enfrentando un problema con "moment": "^2.24.0", .
Uncaught Error: Cannot find module './locale' at

Mismo problema. Resuelto con la solución @enewhuis . ¡Gracias!

Mismo problema. Resuelto con la solución @enewhuis . Gracias hombre.

Problema resuelto con la solución

Mismo problema. @enewhuis solución al rescate

Para mí, roto: "momento": "^ 2.24.0" (se resuelve en 2.25.0)
No roto: "momento": "2.24.0"

Gracias, hombre, estoy luchando con esto todo el día.

El mismo error y la misma solución aquí. Estaba usando la zona horaria del momento.

Antes:

    "moment-timezone": "^0.5.28",

Después:

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

El mismo error y la misma solución aquí. Estaba usando la zona horaria del momento.

Antes:

    "moment-timezone": "^0.5.28",

Después:

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

No funciona para mí con -

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

La solución anterior no me funciona. Nodo v12.6.0, yarn v1.22.4, react-scripts-ts

Trabajó para nosotros con

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

y

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

usando hilo

No funcionó sin el bloque de resoluciones.

Sí, puedo confirmar que agregar el bloque resolutions funcionó para mí. Aunque no tengo idea de por qué ...

¡Gracias @mtogstad !

¡La solución

No entiendo cómo este error podría aparecer aleatoriamente y arruinar mi aplicación de reacción

@bodyfarmer, ¿ podría escribir los pasos para resolverlo?
Estoy enfrentando el mismo problema con la aplicación de reacción.

@hasanmehmood En mi caso, fue suficiente hacer una degradación de las dependencias de momento de esta manera en CMD:

npm install [email protected]

Espero que esto funcione para usted también.

¡Hola chicos!
Enfrenté el mismo problema de las últimas horas y finalmente lo resolví cambiando la versión del momento.

En los comentarios anteriores vi la solución final.

Razón:
_moment lanzó la nueva versión hace 17 horas de 2.24.0 a 2.25.0_

Solución:
Paso 1: cambia las versiones

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

Paso 2: Si está utilizando hilo, agregue resoluciones en su archivo package.json como este
"dependencias" {
"momento": "2.24.0",
"momento-zona horaria": "^ 0.5.28"
},
"resoluciones": {
"momento": "2.24.0"
},

Gracias.

Gracias, @jolalla , primero intenté degradar la versión pero no funcionó para mí. Finalmente, agregar el bloque de resoluciones mostró algo de magia :)

Para otros que enfrentan un problema similar con su aplicación de reacción. Pueden realizar los siguientes 2 pasos para resolverlo.

En dependencias, reemplace
"moment": "^2.24.0",
con
"moment": "2.24.0",

Y agregue el bloque de resoluciones en package.json

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

¿¡Por qué está cerrado este problema!?! ??!?

Buen momento para cambiar a luxon, que es lo que hice para un proyecto que tenía poco uso de momento.

Teniendo el mismo problema
"resoluciones": {
"momento": "2.24.0"
}
resolver mi problema.
Gracias.

¿Algo más que pueda probar? "moment": "2.24.0" , y
"resolutions": { "moment": "2.24.0" }
no me lo están arreglando. Esto es para una implementación de Heroku. Se agradece cualquier idea.

Si por casualidad alguien más tiene un monorepo (y / o está usando espacios de trabajo en package.json), la corrección de 'resoluciones' para usar la versión 2.24.0 del momento anterior solo funcionará si se aplica en el nivel raíz package.json. En nuestro caso, tuvimos que hacer lo siguiente:
{"Resoluciones": {"** / momento": "2.24.0"}}.

¡Realmente espero que la versión 2.25 del momento se solucione correctamente lo antes posible!

si usa hilo, agregue el bloque de resoluciones para anular las versiones de la subdependencia:

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

He estado lidiando con esto durante una hora. eliminar ^ ayuda.

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

Gracias, @jolalla , primero intenté degradar la versión pero no funcionó para mí. Finalmente, agregar el bloque de resoluciones mostró algo de magia :)

Para otros que enfrentan un problema similar con su aplicación de reacción. Pueden realizar los siguientes 2 pasos para resolverlo.

En dependencias, reemplace
"moment": "^2.24.0",
con
"moment": "2.24.0",

Y agregue el bloque de resoluciones en package.json

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

Funciona para mi. Gracias

@hasanmehmood funcionó para mí, gracias hombre

Gracias, @jolalla , primero intenté degradar la versión pero no funcionó para mí. Finalmente, agregar el bloque de resoluciones mostró algo de magia :)

Para otros que enfrentan un problema similar con su aplicación de reacción. Pueden realizar los siguientes 2 pasos para resolverlo.

En dependencias, reemplace
"moment": "^2.24.0",
con
"moment": "2.24.0",

Y agregue el bloque de resoluciones en package.json

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

¡Funciona para mí también! ¡¡Gracias!! :D

He estado haciendo esto durante horas en mi aplicación angular 8 con npm.

  1. Actualicé del momento 2.17 al 2.24
  2. Agregué las resoluciones como se indicó anteriormente: "devDependencies": {...},"resolutions": { "moment": "2.24.0" } a package.json
  3. Se cambió a hilo haciendo lo siguiente. rm -rf node_modules package-lock.json && yarn
    Muchas gracias chicos

Estoy bastante desesperado ... Estoy usando el momento 2.25.1 y cambiando las "devDependencies": {...}, "resolution": {"moment": "2.25.1"} como arriba ... no laboral

estoy usando npm. Soy un novato en Reaccionar, ¿dónde está devDependencies?
he cambiado esto pero todavía no funciona
Capture

¡Estoy usando la versión "2.25.1" y todavía está sucediendo!

@ m4mariaoni : eso se debe a que instaló sin --save-dev , por lo que está cambiando la parte correcta.

Si todavía tiene este problema después de bloquear el momento en 2.24.0, elimine la carpeta de momento de node_modules y reinstale sus paquetes con npm install --save

Gracias, @jolalla , primero intenté degradar la versión pero no funcionó para mí. Finalmente, agregar el bloque de resoluciones mostró algo de magia :)

Para otros que enfrentan un problema similar con su aplicación de reacción. Pueden realizar los siguientes 2 pasos para resolverlo.

En dependencias, reemplace
"momento": "^ 2.24.0",
con
"momento": "2.24.0",

Y agregue el bloque de resoluciones en package.json

"resoluciones": {
"momento": "2.24.0"
}

¡Funciona para mí también! ¡¡Gracias!! : D! piensa!

Gracias, @jolalla , primero intenté degradar la versión pero no funcionó para mí. Finalmente, agregar el bloque de resoluciones mostró algo de magia :)

Para otros que enfrentan un problema similar con su aplicación de reacción. Pueden realizar los siguientes 2 pasos para resolverlo.

En dependencias, reemplace
"moment": "^2.24.0",
con
"moment": "2.24.0",

Y agregue el bloque de resoluciones en package.json

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

Reemplazo

"moment": "^2.24.0",

con

"moment": "2.24.0",

¡funciona para mi! Lo normal,
rm -rf package-lock.json && node_modules

A pesar de hacer todas las medidas anteriores, todavía no funciona ...

Esto es frustrante

Los repositorios creados anteriormente se usaron en el momento 2.24.0 con React, y todavía está funcionando, pero instale el momento 2.24.0 ahora, no funciona ... (También probé todas las medidas anteriores)

¿Cual es la causa?

Me imagino que puede tener un ^ 2.24.0 en lugar de 2.24.0 en algún lugar de un package.json @ wlsdud2194?

No lo hago, y el error sigue apareciendo. Es raro

La versión del momento es 2.24.0 en un package.json en lugar de ^2.24.0 que desde que lo instalé.

Seguí este proceso, una de las medidas anteriores.

  1. agregar bloque de resoluciones
  2. elimine el directorio node_modules y vuelva a instalar el paquete desde el hilo.

funciona para mí, pero no sé por qué funciona ... 😂

Gracias por su interés :) @agrohs

Tuve que degradar de ^2.25.1 a 2.24.0 para solucionar el problema

No lo hago, y el error sigue apareciendo. Es raro

Intente ejecutar npm ls moment para ver si algún otro módulo también usa moment

Y agregue el bloque de resoluciones en package.json
"resoluciones": {"momento": "2.24.0"}

elimine el directorio node_modules y reinstale el paquete de yarn.

rm -rf package-lock.json && node_modules

Contacto: Sr. Liu Tel: 18908205973
Fax: 028-86676917
Correo electrónico: [email protected]
Nombre de la empresa: Chengdu Shouzhi Technology Co., Ltd. Sitio web de la empresa: www.szdma.com
Dirección: Edificio Yinhai, No. 162, Binjiang East Road, Chengdu


Chengdu Shouzhi Technology Co., Ltd. se estableció en 2010. Es una empresa de desarrollo de personalización de software profesional para pequeñas y medianas empresas en Chengdu. La empresa presta servicios principalmente a pequeñas y medianas empresas. Proporciona construcción de redes de área local, sitios web construcción, soluciones de personalización de software, etc., y brinda servicios manuales Un conjunto completo de servicios para el negocio de la informática. La empresa se adhiere al principio de "basada en la integridad, orientada al servicio" para resaltar la imagen de la empresa, a través de nuestros incansables esfuerzos, ofrecemos a los clientes servicios de alta calidad.

Estamos recibiendo Webpack Error: Cannot find module "./locale" error. Estamos usando el paquete 'react-redux-i18n' en nuestro proyecto que depende de 'react-i18nify' y que a su vez depende de 'momento'. Internamente, el 'momento' está configurado para usar la última versión que está causando este error.

npm

En dependencias
"reaccionar": "^ 16.8.1",
"momento": "2.24.0",
"moment-timezone": "^ 0.5.28",
"react-moment-proptypes": "^ 1.5.0",
"react-redux-i18n": "^ 1.9.3",
"react-redux": "^ 6.0.0",

Cualquier ayuda será muy apreciada.

El último parche 2.25.3 parece haberlo solucionado, actualice la versión de momentjs a: "moment": "^2.25.3" en package.json
Elimine la carpeta node_modules y ejecute yarn install o npm install debería hacerlo.

Para aquellos que han perdido algo de confianza en el momento y no quieren que sus aplicaciones se rompan por completo con este problema que vuelva a ocurrir en el futuro, cambié un código base de tamaño mediano a luxon sin demasiados problemas.

Gracias gente ...

Cambié la versión a 24.0 y agregué las "resoluciones": {"moment": "2.24.0"} y ejecuté npm install

Luego pareció funcionar de nuevo (trabajando con React, por cierto).

¡Salud!

El último parche 2.25.3 parece haberlo solucionado, actualice la versión de momentjs a: "moment": "^2.25.3" en package.json
Elimine la carpeta node_modules y ejecute yarn install o npm install debería hacerlo.

Gracias @jasontll , me funciona

Ninguna de estas soluciones funcionó para mí hoy.

He estado haciendo esto durante horas en mi aplicación de reacción
con 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

también funcionó para los chicos, muchas gracias :-)

Yo también corro en este lío. Lo arreglé con la última versión a partir de "moment": "^2.26.0"

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