Moment: Erreur Webpack : Impossible de trouver le module "./locale" après la mise à jour vers 2.19.0

Créé le 10 oct. 2017  ·  149Commentaires  ·  Source: moment/moment

Edit : Si vous définissez votre dépendance sur 2.18.1, tout ira bien.
Edit 2 : Définissez "moment": "2.18.1" dans votre package.json
Edit 3: Nous pensons que cela est corrigé.

Bonjour.
Utilisation de create-react-app. Après avoir mis à jour le moment vers 2.19.0, j'ai cette erreur au chargement :

Erreur : Impossible de trouver le module "./locale"
-> 9 cadres de pile ont été réduits.
./src/utils/Utils.js
src/utils/Utils.js:1

1 | importer le moment à partir de « moment »

Commentaire le plus utile

@patricksteenks : oui. Corrigez comme ceci dans votre package.json "moment": "2.18.1"

Tous les 149 commentaires

J'ai le même, confirmant cette erreur.

pareil ici

Peut confirmer :

This relative module was not found:

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

OK, nous allons étudier cela, mais ce ne sera pas très rapide.

Nous avons changé le nom de la fonction require, si quelqu'un peut voir/enquêter si elle est liée à :

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

Même problème ici. La rétrogradation résoudrait-elle le problème ?

Idem ici, cassé plusieurs applications sur lesquelles je travaille.

@patricksteenks : oui. Corrigez comme ceci dans votre package.json "moment": "2.18.1"

@ichernev hé, mais j'utilise les paramètres régionaux sans importer. Utilisez simplement import moment from 'moment' et utilisez comme ceci moment(date).locale('uk').format('ddd') . Si j'ai bien compris, vous avez changé l'importation en locale . Comment puis-je résoudre ce problème dans mon cas?

Même problème sur le projet construit Angular-CLI

Confirmé.

Les versions de VueJS 2 Webpack ont ​​également été impactées. Le correctif temporaire est comme suggéré par GautierT (momentjs de rétrogradation)

package.json (problème avec moment-timezone dep sur moment 2.19)

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

package.json (problème en général)

    "moment": "2.18.1"

Je peux confirmer que cela se produit également!

je peux confirmer.
package.json

"moment": "2.18.1"

@renedx juste cette ligne assez

Idem dans une application Angular 4.
Juste rétrogradé à 2.18.1 (numéro de version strict dans package.json)

J'ai aussi été touché par ça. Je soupçonne que webpack fait de la magie pour reconnaître le "require" dynamique et ne peut plus le reconnaître sous le nouveau nom, et donc les paramètres régionaux ne sont jamais regroupés dans le package.

(Par ailleurs, toute cette situation ressemble beaucoup à ce à quoi servent les importations dynamiques ES6. Nous pouvons rêver :-)

J'utilise dans webpack à partir de cette page

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

Maintenant, enlève-le

Et dans exiger

const moment = require('moment');

À présent

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

À proprement parler, je pense que la connexion Angular est simplement due au fait que la plupart des projets Angular utilisent Angular-CLI, qui utilise en interne Webpack. Mais cela peut être lié à une configuration Webpack spécifique dans cette pile.
Cela semble être un problème de regroupement assez général, cependant.

Repentez-vous, repentez-vous, la fin du monde est là !

Pareil ici.

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

Idem ici - je l'ai corrigé avec une fonctionnalité de fil pour surcharger les paramètres par défaut d'un package :

placez-le dans votre package.json principal (adaptez "moment-timezone" au nom du package qui charge le moment si vous ne chargez pas directement le moment):

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

tout comme un astéroïde de 10km.... pareil ici...

Qu'est-ce que l'ETA pour la réparation ?

D'accord, voici où nous en sommes :

  • Si vous définissez votre dépendance sur 2.18.1, tout ira bien.
  • C'est un problème avec https://github.com/moment/moment/pull/4213
  • J'ai engagé à la fois le webpack et les équipes natives de réaction pour parler du correctif qui fonctionnera pour toutes les parties
  • Étant donné que la définition de la dépendance sur 2.18.1 fournit une atténuation facile, je ne souhaite pas pour le moment revenir en arrière. Au lieu de cela, je voudrais attendre des commentaires de Webpack et React Native pour voir si nous pouvons arriver à un accord sur ce qu'il faut faire se déplacera cette situation avant. Pour cette raison, je n'ai pas d'ETA sur un correctif.
  • Un MCVE peut être trouvé ici : https://github.com/mj1856/moment-webpack-test

Erreur confirmée lors de l'exécution de l'application React créée avec la CLI create-react-app.

Résolu ce moment de déclassement et la version monent-fuseau horaire.

npm install [email protected] tant que correctif temporaire afin que vous n'ayez pas à mettre à jour package.json plusieurs fois. Cela sera probablement corrigé bientôt, alors vous pouvez faire npm i .

@aheissenberger cela m'a sauvé la vie, j'ai eu le même problème avec rc-calendar, je peux confirmer que cela fonctionne pour le fil 1.2.0.

Même problème webpack 3.6.0 + moment 2.19.0. A bien fonctionné avec 2.18.1

D'autres pourraient avoir le même problème : même si je n'ai pas mis à jour vers 2.19.0, dans mon package.json j'avais ^2.18.1 . Je l'ai changé en 2.18.1 sans le ^ , et maintenant il n'installera rien de supérieur à 2.18.1 jusqu'à ce que nous sachions que 2.19.x est sûr

@ichernev semble très probable que le changement de nom de 'require' soit à l'origine de ces ruptures généralisées. Je soupçonne que lorsque vous avez besoin de modules utilisant une référence comme celle-ci, cela signifie que webpack est incapable de détecter l'importation car il utilise l'analyse statique AST pour déterminer les dépendances.

Peut-être pourriez-vous fournir des détails sur le problème React Native qu'il résolvait, car il pourrait y avoir un meilleur moyen de contourner ce problème d'origine?

Dans notre projet, nous utilisons yarn 1.0.2 , create-react-app , et ces deps dans 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"
 }

Bien que nous utilisions "moment": "2.18.1" , nous obtenons toujours
screen shot 2017-10-10 at 3 53 43 pm

Existe-t-il une solution de contournement du problème pour le fil?

@ggsjyoon : j'ai eu une situation similaire (toujours avec l'erreur) jusqu'à ce que je me souvienne que vous devrez mettre à jour l'un des fichiers que WebPack surveille pour qu'il se régénère et supprime toute version mise en cache.

+1

@ggsjyoon il pourrait y avoir une exigence supplémentaire de l'un de vos packages (par exemple, moment-timezone) - vous pouvez utiliser mon astuce https://github.com/moment/moment/issues/4216#issuecomment -335489518 pour résoudre ce problème avec du fil

J'ai fini par surmonter cela en changeant:

import * as moment from 'moment';

à:

import * as moment from 'moment/moment';

+1

@morrisonbrett Cela fonctionne. Merci

Confirmer la suggestion de @GautierT fonctionne pour moi.

@maggiepint En voyant ce qui a fonctionné pour @morrisonbrett , je pense que #4213 n'est peut-être pas le problème. 2.19 a introduit un autre nouveau changement, le champ module dans package.json - c'est-à-dire qu'auparavant, webpack utilisait la version transpilée.

L'activation de ES6 pour réagir natif est à l'origine de la plupart des problèmes bloquant #4187, et #3904 (sur la branche de développement uniquement pendant un certain temps) a apporté le même changement pour tous les utilisateurs de webpack.

@tqc - c'est probablement les deux. @thelarkinn a déjà confirmé que webpack n'aimerait pas que la dynamique l'exige.

Même problème ici, des mises à jour ?

@maggiepint Oui, j'ai réalisé juste après avoir écrit ce commentaire que le bogue à la fin du fil n'était pas tout à fait le même au début. Le côté ES6 des choses peut être réparable avec quelque chose comme module.exports = require(‘moment’).default , mais je ne sais pas si cela permettra toujours de secouer les arbres, et l'harmonie des nœuds n'aime pas mélanger import avec require.

résolu via webpack aliasing :

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

Quelqu'un peut-il comprendre tous les éléments de 2.19 qui ont cassé le webpack, proposer un PR minimal (basé sur 2.19.0), qui annule les "mauvais" éléments, et nous envisagerons de le fusionner pour 2.19.1.

Dire "moi aussi" pour la 1000 fois n'apporte pas grand-chose à la table.

La solution de @morrisonbrett fonctionne import * as moment from 'moment/moment';

Je peux confirmer ce même problème avec Angular-CLI v1.4.4. J'ai d'abord été surpris lorsque j'ai vu l'erreur impliquant momentjs car mon projet ne l'utilise pas, mais après avoir enquêté, j'ai retracé son injection jusqu'à WebPack.

Voici mon message d'avertissement lorsque je compile :

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

J'ai aussi essayé la méthode import * as moment from 'moment/moment'; mais pas de chance pour mon cas.

@kud , @AleshaOleg - si vous essayez toujours d'importer des paramètres régionaux :
à la place de:
import 'moment/locale/*
essayer:
import 'moment/src/locale/*'

Je me suis battu avec le même problème ici...
–––
@AleshaOleg : dans votre cas d'utilisation, je pense que cela pourrait être :
import moment from 'moment'
import 'moment/src/locale/uk'
puis appelez simplement moment(date).format('ddd')

Merci @dialnco !

J'ai fini par résoudre ce problème, lors de la mise à jour vers 2.19.0 , en désactivant complètement le code qui tente de charger les locales.

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

J'ai ensuite ajouté manuellement import 'moment/src/locale/ja' , import 'moment/src/locale/pt-br' , et autres selon les besoins de mon application, au lieu de charger tous les paramètres régionaux. Si vous êtes créatif, vous pouvez utiliser des import() dynamiques à la place pour ne charger que la langue dont votre application a besoin.

Il est très important que, si vous faites cela, vous ne fassiez pas import 'moment/locale/foo' , mais import 'moment/src/locale/foo' . En raison de la façon dont les fichiers de paramètres régionaux essaient de se référer à moment lui-même, ils regrouperont à la place une deuxième copie de moment (cette fois la version UMD par opposition à la version ESM) et cela, en tournez, chargez à nouveau tous les paramètres régionaux.

J'espère que cela aidera quelqu'un (options 1 et 2 du commentaire ci-dessus, merci à @patsissons ):
-Si vous n'avez pas de modules qui chargent moment.js, mais que votre application le fait, passez simplement à l'ancienne version
-Si vous avez des modules qui ont également moment.js dans les dépendances, ce qui précède ne vous aidera pas, vous devez modifier votre configuration webpack :
{...
résoudre: {
...
pseudo : {
'moment$': 'moment/moment',
}
}
}

-Mais si vous utilisez react-create-app (comme je le fais) et que vous devez avoir une version fonctionnelle dès que possible, la seule option pour vous d'exécuter 'npm eject', de cette façon vous aurez accès à la configuration webpack et en second lieu option sera disponible pour vous.

Je suis donc désolé mais la seule méthode qui fonctionnait ici était celle de @patsissons . https://github.com/moment/moment/issues/4216#issuecomment -335637520

Toujours

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

mais en ajoutant dans le webpack

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

Pour une raison quelconque, fil a ignoré mon paramètre "résolutions" de package.json.
Si vous utilisez moment-timezone, un moyen rusé de le résoudre consiste à modifier le fil.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"

Nous attendons le correctif 2.19.1....

Quelqu'un pourrait-il décrire quel est le problème réel ici? Est-ce simplement que webpack n'identifie pas l'alias require() ?

@TomMettam 2.19.0 a pointé webpack sur le code es6 dans moment/src/moment, qui n'exporte pas tout à fait la même interface que moment/moment.

En plus de cela, l'alias require empêche webpack d'empaqueter tous les fichiers qui pourraient éventuellement être demandés dynamiquement. L'importation manuelle des fichiers de paramètres régionaux fonctionnerait, sauf que le choix évident d'importer à partir de moment/locale les chargera dans une instance de moment différente de celle que vous utilisez réellement.

Et si tout cela est trop simple, il existe des différences dans le comportement des différentes versions de fil/npm - il se trouve que j'utilise une version de npm qui utilise n'importe quelle instance du package se trouvant dans le dossier node_modules de l'application racine, mais d'autres versions font il est plus difficile de remplacer le package utilisé.

Qui a décidé que changer la signature d'exportation dans une version mineure était une bonne idée ?

Notez que cela casse également les bibliothèques tierces en s'appuyant sur le moment

+1

Ce n'est pas acceptable pour une mise à niveau mineure.

Je comprends l'idée derrière, mais s'il vous plaît, soyez plus strict à propos de semver.

@darkalor ce n'était pas intentionnel - la signature d'exportation en question n'est matériellement différente que dans un ensemble limité de circonstances - le genre de chose qui semble bien fonctionner jusqu'à ce qu'elle soit exposée à un grand nombre d'utilisateurs.

@darkalor @kud - Des régressions se produisent. S'il vous plaît, essayez d'être constructif ; tout le monde est conscient que cela n'aurait pas dû arriver et les coups de gueule n'aident personne.

@TomMettam Oui, cela arrive, mais lorsque cela se produit, vous pouvez y faire face et en traitant, je veux dire que vous pouvez le mettre à niveau en tant que majeur, pas mineur. C'est tout. Je ne blâme personne, je blâme la situation selon laquelle si quelqu'un pense "oh ok, je peux mettre à niveau, car ce n'est qu'un mineur", c'est plutôt faux dans ce cas. ;)

J'apprécie tout le travail effectué sur le moment, mais je ne parle que de la situation instable.

Je n'offense personne, désolé.

@kud pas quand vous devez choisir le numéro de version avant de savoir que la régression existe. Le niveau de complexité requis pour prendre en charge le nombre d'environnements est quelque chose d'assez impressionnant.

@tqc mais maintenant vous le savez, c'est le truc. Comme dit précédemment par @TomMettam , cela arrive.

La suppression ou/et l'ajout de balises est possible.

Quoi qu'il en soit, je ne spammerai plus ici, merci pour la solution de contournement ; J'ai ajouté une note pour les autres personnes ne suivant pas ce problème, dans le changelog : https://gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603#gistcomment -2226628

Passe une bonne journée. :)

J'utilise le fil comme gestionnaire de paquets. Pour une raison quelconque, mon fichier fil.lock n'était pas mis à jour pour refléter la modification que j'avais apportée à mon fichier package.json. mes paramètres comme @daniesy l'a dit. Le problème était que le fuseau horaire de mon fichier fil.lock dépendait toujours de la version du moment '^2.18.1'.

Pour y remédier, j'ai effectué un nettoyage du cache de fil :
yarn cache clean

Puis :
yarn install

Espérons que cela devrait régénérer votre fichier fil.lock avec quelque chose du

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

Dans tous les cas, vérifiez simplement que votre fil de verrouillage n'essaie pas d'inclure une version moment supérieure à 2.18.1 dans aucun module, en particulier moment-timezone et moment.

Je pense que nous avons un correctif : https://github.com/moment/moment/pull/4232

La meilleure partie - je pense que cela fonctionnera à la fois pour le webpack et pour réagir natif - pas de tristesse !
J'ai testé dans webpack, mais est-ce que quelqu'un utilisant le test natif réagirait ? Notez que vous devrez exécuter grunt release pour créer les fichiers avant de pouvoir tester à l'aide d'un lien npm.

@maggiepint - Une possibilité que cela fonctionne aussi pour Angular-CLI ?

2.19.1 est sorti, essayez-le

Fonctionne pour moi avec Webkit.

Merci @ichernev et à toutes les personnes impliquées !

@ichernev : 2.19.1 fonctionne pour moi.
Réagissez 16.
créer-réagir-application.
Non éjecté

Moment chargé comme ceci :

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

Merci pour la correction. ??

Je viens de lancer une autre version VSTS à l'aide de angular-cli/webpack et de la redéployer dans l'environnement

Tout est revenu à la normale

Merci

Je peux également confirmer que ce problème est résolu pour Angular-CLI v1.4.4. Merci!

fonctionne avec typescript/webpack/karma/phantomjs. Merci pour la correction !

Pour que cela fonctionne, je viens d'inclure le fichier de paramètres régionaux avant le moment.
import 'moment/locale/de'; import moment from 'moment';
et plus tard a fait
moment.locale("de");

semble exister toujours dans la "version": "2.22.2" ?

J'utilise également 2.22.2. le problème existe toujours

J'utilise 2.22.2 et je vois le même problème.

Comme ci-dessus. Même problème, même version.

En utilisant React Native et en voyant cette erreur pour une version de version :

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 travaux

ne fonctionne toujours pas pour moi

je n'arrive pas à faire fonctionner 2.18.1 pour moi non plus

2.22.1 ftw lol

J'ai également remarqué une régression dans la v2.22.2. Revenir à 2.22.1 l'a corrigé pour moi.

Salut à tous,

J'ai eu le même problème (en utilisant Webpack dans Laravel). Ce n'est pas idéal, mais une solution rapide qui a fonctionné pour moi consiste à copier le dossier "locale" du référentiel à côté du fichier moment.js ou moment-with-locale.js.

Également en cours d'exécution sur v2.22.2 .

Pour que cela fonctionne, je viens d'inclure le fichier de paramètres régionaux avant le moment.
import 'moment/locale/de'; import moment from 'moment';
et plus tard a fait
moment.locale("de");

@mj1856 est-il approprié de rouvrir ce problème ou devrions-nous en créer un nouveau ? Je revois aussi ça. Le retour à la version 2.22.1 ne l'a pas résolu dans mon cas et j'ai dû utiliser le correctif @patsissons pour rendre webpack heureux à nouveau.

même

J'ai utilisé allowSyntheticDefaultImports comme expliqué dans le document ici : https://momentjs.com/docs/#/use -it/typescript/ et cela a résolu l'erreur Cannot find module "./locale" pour moi. Notez que // @ts-ignore au-dessus de l'importation était également nécessaire dans mon IDE.

même question, moment:'2.18.1'

Est-ce toujours conseillé : import moment from "moment/min/moment-with-locales"; ?

b/c je me retrouve avec la même erreur (?) avec [email protected] et CRA :

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

Pour tous ces passants d'Internet, voici un moyen de résoudre le problème si vous construisez avec rollup :

En supposant que vous utilisez 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 a une entrée package.json pour jsnext:main que nous pouvons exploiter ici. pour inclure les paramètres régionaux pour nous pendant le processus de construction. La taille de votre bundle augmentera, mais cela évitera les erreurs de la console 😅

J'ai le même problème avec la version 2.24.0 de moment dans mon application React. Je suppose que ce problème n'a pas encore été résolu.

J'ai le même problème avec la version 2.24.0 de moment dans mon application React. Je suppose que ce problème n'a pas encore été résolu.

Confirmation. "moment": "2.24.0". 2.18.1 ne résout pas le problème. Nœud v12.16.0

Idem ici, avec 2.24.0 pour mon projet Preact.

Toujours en train de rencontrer ce problème s'il vous plaît aider !!

Pour moi, cassé : "moment": "^2.24.0" (résolution à 2.25.0)
Non cassé : "moment": "2.24.0"

si vous utilisez fil, ajoutez un bloc de résolutions pour remplacer les versions de la sous-dépendance :

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

Utilisez "moment": "2.24.0" et comme @rilyu l'a suggéré, utilisez la résolution. A travaillé pour moi.

Revenir à "2.24.0" et supprimer le "^" a fonctionné pour moi. On dirait que leur dernière version a été poussée hier soir et la rejette.

Problème avec "moment": "^2.24.0", .
Uncaught Error: Cannot find module './locale' at

Même problème. Résolu avec la solution @enewhuis . Merci!

Même problème. Résolu avec la solution @enewhuis . Merci mec.

Problème résolu avec la solution

Même problème. La solution

Pour moi, cassé : "moment": "^2.24.0" (résolution à 2.25.0)
Non cassé : "moment": "2.24.0"

Merci mec, j'ai du mal avec ça toute la journée

Même erreur et même correctif ici. J'utilisais moment-timezone.

Avant de:

    "moment-timezone": "^0.5.28",

Après:

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

Même erreur et même correctif ici. J'utilisais moment-timezone.

Avant de:

    "moment-timezone": "^0.5.28",

Après:

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

Ne travaille pas pour moi avec -

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

Le correctif ci-dessus ne fonctionne pas pour moi. Nœud v12.6.0, fil v1.22.4, react-scripts-ts

A travaillé pour nous avec

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

et

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

en utilisant du fil

Cela ne fonctionnait pas sans le bloc de résolutions.

Oui, je peux confirmer que l'ajout du bloc resolutions fonctionné pour moi. Je ne sais pas pourquoi, par contre...

Merci @mtogstad !

La solution

Je ne comprends pas comment cette erreur pourrait apparaître au hasard et détruire mon application de réaction

@bodyfarmer pouvez-vous s'il vous plaît écrire les étapes sur la façon dont vous le résolvez?
Je suis confronté au même problème avec l'application React.

@hasanmehmood Dans mon cas, il suffisait de réduire les dépendances du moment de cette façon dans CMD :

npm install [email protected]

J'espère que cela fonctionne pour vous aussi.

Bonjour gars!
J'ai rencontré le même problème au cours des dernières heures et je l'ai finalement résolu en changeant la version du moment.

Dans les commentaires ci-dessus, j'ai vu la solution finale.

Raison:
_moment de sortie de la nouvelle version il y a 17 heures de 2.24.0 à 2.25.0_

Solution:
Étape 1 : changer les versions

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

Étape 2: Si vous utilisez du fil, veuillez ajouter des résolutions dans votre fichier package.json comme ceci
"dépendances" {
"moment": "2.24.0",
"moment-timezone": "^0.5.28"
},
"résolutions": {
"moment": "2.24.0"
},

Je vous remercie.

Merci, @jolalla , j'ai d'abord essayé de rétrograder la version mais cela n'a pas fonctionné pour moi. Enfin, l'ajout du bloc de résolutions a montré un peu de magie :)

Pour les autres qui sont confrontés à un problème similaire avec leur application de réaction. Ils peuvent suivre les 2 étapes suivantes pour le résoudre.

Dans les dépendances, remplacez
"moment": "^2.24.0",
avec
"moment": "2.24.0",

Et ajoutez le bloc de résolutions dans package.json

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

Pourquoi ce problème est-il clos !?!??!?

C'est le bon moment pour passer à luxon, ce que j'ai fait pour un projet qui a eu une faible utilisation du moment.

Avoir le même problème
"résolutions": {
"moment": "2.24.0"
}
résoudre mon problème.
Merci.

Autre chose que je peux essayer ? "moment": "2.24.0" , et
"resolutions": { "moment": "2.24.0" }
ne le répare pas pour moi. Ceci est pour un déploiement Heroku. Toutes les idées sont appréciées.

Si par hasard quelqu'un d'autre a un monorepo (et/ou utilise des espaces de travail dans package.json), le correctif "résolutions" pour utiliser la version 2.24.0 du moment précédent ne fonctionnera que s'il est appliqué au niveau racine package.json. Dans notre cas, nous avons dû effectuer les opérations suivantes :
{ « résolutions » : { « **/moment » : « 2.24.0 » } }.

Espérons vraiment que la version 2.25 soit corrigée correctement dès que possible !

si vous utilisez fil, ajoutez un bloc de résolutions pour remplacer les versions de la sous-dépendance :

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

Je m'occupe de ça depuis une heure. supprimer ^ aide.

Pour les personnes utilisant create-react-app et qui ne souhaitent pas éjecter CRA, vous pouvez installer :

Créez ensuite un config-overrides.js à la racine du répertoire de votre projet pour un remplacement ultérieur.

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

Modifiez votre package.json :

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

Parce que j'utilise ant design, mon config-overrides.js ressemble à ceci :

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

Mais le tien sera plus simple, quelque chose comme ça je pense :

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

Merci, @jolalla , j'ai d'abord essayé de rétrograder la version mais cela n'a pas fonctionné pour moi. Enfin, l'ajout du bloc de résolutions a montré un peu de magie :)

Pour les autres qui sont confrontés à un problème similaire avec leur application de réaction. Ils peuvent suivre les 2 étapes suivantes pour le résoudre.

Dans les dépendances, remplacez
"moment": "^2.24.0",
avec
"moment": "2.24.0",

Et ajoutez le bloc de résolutions dans package.json

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

Travaille pour moi. Merci

@hasanmehmood ça a marché pour moi, merci mec

Merci, @jolalla , j'ai d'abord essayé de rétrograder la version mais cela n'a pas fonctionné pour moi. Enfin, l'ajout du bloc de résolutions a montré un peu de magie :)

Pour les autres qui sont confrontés à un problème similaire avec leur application de réaction. Ils peuvent suivre les 2 étapes suivantes pour le résoudre.

Dans les dépendances, remplacez
"moment": "^2.24.0",
avec
"moment": "2.24.0",

Et ajoutez le bloc de résolutions dans package.json

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

Fonctionne pour moi aussi! Merci!! :RÉ

Je le fais depuis des heures sur mon application angulaire 8 avec npm.

  1. J'ai mis à jour du moment 2.17 à 2.24
  2. J'ai ajouté les résolutions comme indiqué ci-dessus - "devDependencies": {...},"resolutions": { "moment": "2.24.0" } à package.json
  3. Changé en fil en procédant comme suit. rm -rf node_modules package-lock.json && yarn
    Merci beaucoup les gars

Je suis assez désespéré... J'utilise le moment 2.25.1 et je modifie les "devDependencies": {...},"resolutions": { "moment": "2.25.1" } comme ci-dessus... pas travail

j'utilise npm. je suis un débutant en réaction où est devDependencies?
j'ai changé ça mais ça ne marche toujours pas
Capture

J'utilise la version "2.25.1" et ça se passe toujours !

@m4mariaoni - c'est parce que vous avez installé sans --save-dev , vous changez donc la bonne partie.

Si vous rencontrez toujours ce problème après avoir verrouillé moment sur 2.24.0, supprimez le dossier moment de node_modules et réinstallez vos packages avec npm install --save

Merci, @jolalla , j'ai d'abord essayé de rétrograder la version mais cela n'a pas fonctionné pour moi. Enfin, l'ajout du bloc de résolutions a montré un peu de magie :)

Pour les autres qui sont confrontés à un problème similaire avec leur application de réaction. Ils peuvent suivre les 2 étapes suivantes pour le résoudre.

Dans les dépendances, remplacez
"moment": "^2.24.0",
avec
"moment": "2.24.0",

Et ajoutez le bloc de résolutions dans package.json

"résolutions": {
"moment": "2.24.0"
}

Fonctionne pour moi aussi! Merci!! :Pense!

Merci, @jolalla , j'ai d'abord essayé de rétrograder la version mais cela n'a pas fonctionné pour moi. Enfin, l'ajout du bloc de résolutions a montré un peu de magie :)

Pour les autres qui sont confrontés à un problème similaire avec leur application de réaction. Ils peuvent suivre les 2 étapes suivantes pour le résoudre.

Dans les dépendances, remplacez
"moment": "^2.24.0",
avec
"moment": "2.24.0",

Et ajoutez le bloc de résolutions dans package.json

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

Remplacement

"moment": "^2.24.0",

avec

"moment": "2.24.0",

travaille pour moi! L'habituel,
rm -rf package-lock.json && node_modules

Malgré toutes les mesures ci-dessus, cela ne fonctionne toujours pas...

C'est frustrant

Les référentiels créés précédemment ont été utilisés moment 2.24.0 avec React, et cela fonctionne toujours, mais installez moment2.24.0 maintenant, ne fonctionne pas .... (J'ai également essayé toutes les mesures ci-dessus)

Quelle est la cause?

J'imagine que vous pouvez avoir un ^2.24.0 au lieu de 2.24.0 quelque part dans un package.json @wlsdud2194 ?

Je ne le fais pas, et l'erreur continue de se produire. C'est étrange

moment version est 2.24.0 dans un package.json au lieu de ^2.24.0 depuis que je l'ai installé.

J'ai suivi ce processus, l'une des mesures ci-dessus

  1. ajouter un bloc de résolutions
  2. supprimez le répertoire node_modules et réinstallez le package de fil.

fonctionne pour moi, mais je ne sais pas pourquoi travailler...😂

Merci de votre intérêt : ) @agrohs

A dû rétrograder de ^2.25.1 à 2.24.0 pour résoudre le problème

Je ne le fais pas, et l'erreur continue de se produire. C'est étrange

Essayez d'exécuter npm ls moment pour voir si un autre module utilise également moment

Et ajoutez le bloc de résolutions dans package.json
"résolutions": {"moment": "2.24.0"}

supprimez le répertoire node_modules et réinstallez le package de fil.

rm -rf package-lock.json && node_modules

Contact : M. Liu Tél. : 18908205973
Télécopieur : 028-86676917
Courriel : [email protected]
Nom de l'entreprise : Chengdu Shouzhi Technology Co., Ltd. Site Web de l'entreprise : www.szdma.com
Adresse : Bâtiment Yinhai, n° 162, route est de Binjiang, Chengdu


Chengdu Shouzhi Technology Co., Ltd. a été créée en 2010. Il s'agit d'une société professionnelle de développement de logiciels de personnalisation pour les petites et moyennes entreprises de Chengdu. La société sert principalement les petites et moyennes entreprises. Elle fournit la construction de réseaux locaux, le site Web construction, solutions de personnalisation de logiciels, etc., et fournit des services manuels Un ensemble complet de services pour l'entreprise informatique. L'entreprise adhère au principe « basé sur l'intégrité, axé sur le service » pour mettre en valeur l'image de l'entreprise ; grâce à nos efforts inlassables, nous fournissons aux clients des services de haute qualité.

Nous obtenons Webpack Error: Cannot find module "./locale" erreur

npm

Dans les dépendances
"réagir": "^16.8.1",
"moment": "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",

Toute aide serait grandement appréciée.

Le dernier patch 2.25.3 semble l'avoir corrigé, mettez à jour la version momentjs vers : "moment": "^2.25.3" dans package.json
Supprimez le dossier node_modules et exécutez yarn install ou npm install devrait le faire.

Pour ceux qui ont perdu confiance en un moment et qui ne veulent pas que leurs applications se séparent complètement de ce problème qui se reproduira à l'avenir - j'ai basculé une base de code de taille moyenne vers luxon sans trop de problèmes.

Merci les gens...

J'ai changé la version en 24.0 et j'ai ajouté les "résolutions": { "moment": "2.24.0" } et j'ai exécuté npm install

Ensuite, cela a semblé fonctionner à nouveau (en travaillant avec React, soit dit en passant).

Acclamations!

Le dernier patch 2.25.3 semble l'avoir corrigé, mettez à jour la version momentjs vers : "moment": "^2.25.3" dans package.json
Supprimez le dossier node_modules et exécutez yarn install ou npm install devrait le faire.

Merci @jasontll , ça marche pour moi

Aucune de ces solutions n'a fonctionné pour moi aujourd'hui.

Je fais ça depuis des heures sur mon application de réaction
avec 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

ça a aussi fonctionné pour les gars merci beaucoup :-)

Je cours aussi dans ce trouble. Je l'ai corrigé avec la dernière version à partir de "moment": "^2.26.0"

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

tanepiper picture tanepiper  ·  3Commentaires

Shoroh picture Shoroh  ·  3Commentaires

M-Zuber picture M-Zuber  ·  3Commentaires

alvarotrigo picture alvarotrigo  ·  3Commentaires

danieljsinclair picture danieljsinclair  ·  3Commentaires