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 »
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 :
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
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.
Hé @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
É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.
"devDependencies": {...},"resolutions": {
"moment": "2.24.0"
}
à package.jsonrm -rf node_modules package-lock.json && yarn
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
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
- ajouter un bloc de résolutions
- 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
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écutezyarn install
ounpm 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"
Commentaire le plus utile
@patricksteenks : oui. Corrigez comme ceci dans votre package.json
"moment": "2.18.1"