Moment: Chemin './locale' introuvable dans moment/src/lib/locale/locales.js

Créé le 19 mars 2018  ·  54Commentaires  ·  Source: moment/moment

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in 'D:\project-fed\ecloud\client-web\node_modules\moment\src\lib\locale'

J'ai trouvé qu'il y a quelque chose qui ne va pas avec la fonction ci-dessous

function loadLocale(name) {
    var oldLocale = null;
    // TODO: Find a better way to register and load all the locales in Node
    if (!locales[name] && (typeof module !== 'undefined') &&
            module && module.exports) {
        try {
            oldLocale = globalLocale._abbr;
            var aliasedRequire = require;
            aliasedRequire('./locale/' + name);
            getSetGlobalLocale(oldLocale);
        } catch (e) {}
    }
    return locales[name];
}

aliasedRequire('./locale/' + name); , devrait-il être ../locale/ ?

Troubleshooting

Commentaire le plus utile

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

Tous les 54 commentaires

Je vois ce même avertissement lorsque j'utilise webpack pour regrouper le moment. Une idée de quand cette erreur a été introduite ?

J'ai le même avertissement en utilisant angular-cli n'importe quelle solution?

Avoir le même problème. Connaissez-vous des solutions de contournement / correctifs?

Même problème - ressemble à un problème de chemin avec './locale' vs '../locale'. Est-ce que quelqu'un regarde ce bug ?

https://github.com/moment/moment/issues/2979

On dirait que c'est le cas depuis des années, pourquoi ils ne le répareront pas, je n'en ai aucune idée. Je viens de rencontrer cela également en essayant d'utiliser jsnext:main dans webpack au lieu de main.

Ma solution de contournement pour continuer à utiliser

... resolve: { alias: { moment$: path.resolve(root_dir, "node_modules/moment/moment.js") } }

Ce qui précède n'a pas fonctionné pour moi, mais suivre ce tutoriel m'a aidé à le résoudre.

https://alligator.io/angular/custom-webpack-config/

Y a-t-il quelque chose de nouveau à ce sujet? J'utilise Laravel Mix... même chose ici...

je fais

import * as moment from 'moment';

et ça marche.

je fais

import * as moment from 'moment';

et ça marche.

dans le webpack ? Je réfléchis à la façon de le faire avec Laravel Mix ..

@marcelogarbin oh désolé je n'ai pas joué avec Laravel depuis la version 4. Je m'excuse mais je ne sais pas comment le faire fonctionner avec laravel mix.

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

La solution de @yaasinhamidi a fait l'affaire

je fais

import * as moment from 'moment';

et ça marche.

Où placer cette ligne ?

Rencontrer ce même problème pour la première fois après la mise à jour vers 2.25.0. J'utilise également Laravel Mix (remarque, je n'ai jamais rencontré ce problème sur les versions précédentes).

ma solution de contournement est de revenir à 2.24.0

Je rencontre le même problème après la mise à jour

Jusqu'à ce qu'il soit corrigé, le retour à la version 2.24.0 résout ce problème.

Le retour à la v.2.24.0 a également fonctionné pour moi.

pour toute autre personne rencontrant ce problème, j'ai également dû forcer les versions des moments que d'autres packages de mon dossier node_modules/ extraits en tant que dépendances de la v2.24.0

en utilisant du fil, en ajoutant cette ligne à package.json a trié les choses pour moi

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

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 sortie 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"
},

Merci.

Même si vous avez, bloc suivant. Le package-lock.json créera une nouvelle version, c'est-à-dire 2.5.1. Alors changez-le en "moment": "2.24.0" jusqu'à ce que le problème soit résolu.
"dépendances" {
"moment": "^2.24.0", ----------------> "moment": "2.24.0"
},

je suis revenu à 2.24.0 mais j'ai toujours le même avertissement lors de l'utilisation du nœud

C'est étrange que j'aie commencé à avoir cette erreur aujourd'hui après avoir réinstallé les dépendances, la solution suggérée d'ignorer les plugins régionaux avec webpack n'a pas fonctionné. Ce qui a fonctionné, c'est de laisser la version corrigée à 2.24.0 comme suggéré par @sachins81 . Je me demande si quelque chose de pertinent a changé dans les commits récents ? @ichernev

je suis revenu à 2.24.0 mais j'ai toujours le même avertissement lors de l'utilisation du nœud
@nitindevelopermca Assurez-vous que c'est "2.24.0" et non "^2.24.0". (A fonctionné pour moi après l'avoir changé)

Je viens de revenir à "^2.18.1" et tout semble bien fonctionner

Même problème avec React, le moment n'est pas une dépendance de mon projet, donc je ne peux pas le faire reculer

Même problème avec React, le moment n'est pas une dépendance de mon projet, donc je ne peux pas le faire reculer

Vous pouvez exécuter ces commandes pour le moment.

npm install [email protected] --save

J'ai eu le même cas et quand je recherche en quelque sorte antd utilisait moment comme dépendance et j'espère que le problème du moment sera fermé dans la prochaine version alors que j'ai vu qu'ils ont publié une nouvelle version, veuillez donc d'abord essayer la dernière version qui est 2.25.1 puis essayez d'ajouter le moment en tant que dépendance.

Merci!

Cela m'a aidé à passer à la version fixe 2.24.0 dans le dependencies et dans le resolutions . J'utilise le package dans mon code et en tant que dépendance de react et antd .

Si vous avez plusieurs espaces de travail, n'oubliez pas de modifier tous les fichiers package.json . J'ai oublié ça au début.

le même problème s'est produit dans la v2.25.1, puis j'essaie de les ajouter dans package.json (j'utilise du fil):

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

Même erreur ici. j'ai

"dependencies": {
    "moment": "^2.25.1"
}

et quand je lance npm run production j'obtiens :
shell script WARNING in ./node_modules/moment/src/lib/locale/locales.js Module not found: Error: Can't resolve './locale' in '/var/www/apf.local/html/node_modules/moment/src/lib/locale' @ ./node_modules/moment/src/lib/locale/locales.js @ ./node_modules/moment/src/lib/locale/locale.js @ ./node_modules/moment/src/moment.js @ ./resources/js/app.js @ multi ./resources/js/app.js

Avec la version ~2.24.0 , tout fonctionne comme prévu.

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 sortie 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"
},

Merci.

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

super! Ça marche!

Merci .
Son travail bien. il suffit d'importer la ligne ci-dessous :
importer * comme moment à partir de « moment/moment » ;

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

Solution fantastique :) a résolu un casse-tête majeur avec cela

Fantastic fix :) solved a major headache with this

Correctif médiocre, si quelqu'un n'a pas directement antd comme dépendance.

J'ai rencontré le même problème mais je n'ai pas de momentjs dans les dépendances. Mais antd le fait.
Et npm ne peut pas fonctionner avec des résolutions.

La seule solution pour moi en ce moment est de rétrograder antd.
Je ne vois pas de solution appropriée qui n'inclurait pas un package supplémentaire pour que les choses fonctionnent.

J'ai le même problème dans mon application React qui, pour une raison quelconque, a commencé à apparaître à l'improviste. J'utilise moment dans cette application depuis toujours et je n'avais jamais remarqué cette erreur. C'est en fait devenu une erreur dans mon cas car mon application React ne se compile pas à cause de ce problème.

J'ai ensuite essayé import moment from 'moment/moment'; ce qui a résolu le problème de compilation, mais je reçois toujours l'avertissement suivant à chaque fois que j'exécute l'application.

./node_modules/moment/src/lib/locale/locales.js
Module not found: Can't resolve './locale' in 'C:\Users\myname\source\repos\myapp\node_modules\moment\src\lib\locale'

Le seul point positif est que mon application React, au moins, se compile et fonctionne correctement.

J'ai également le même problème avec create-react-app (modèle dactylographié). J'ai essayé import moment from 'moment'; .Ensuite, j'ai eu l'erreur :
./node_modules/moment/src/lib/locale/locales.js Module not found: Can't resolve './locale' in 'D:\MyName\Learning\ProjectName\node_modules\moment\src\lib\locale'

@devayarhlaine J'ai

C'était un problème de nouvelle version moment.

Idem ci-dessus :
J'ai également le même problème avec "Impossible de trouver le module 'moment'".
L'utilisation de la solution avec "import * as moment from 'moment/moment' a résolu un problème.
Mais ensuite j'ai l'erreur :
./node_modules/moment/src/lib/locale/locales.js Module introuvable : impossible de résoudre './locale' dans 'D:\MyName\Learning\ProjectName\node_modulesmoment\src\lib\locale'
et le déclassement n'est pas une solution (à mon avis :-).

Vous avez cette erreur lors de la mise à niveau de angulaire 8 à angulaire 9.1.
La mise à niveau vers le moment 2.25.1 a résolu le problème #5486 ("TS2307: Impossible de trouver le module 'moment'. "), mais l'erreur de locale est restée.

Pour ceux qui utilisent la commande "yarn create react-app", le correctif consiste à éditer node_modules/react-scripts/config/webpack.config.js pour ajouter l'alias comme ci-dessous.

moment$: 'moment/moment.js'

Insérez la ligne ci-dessus dans le bloc d'alias à la ligne numéro 311.

alias: {
  // Support React Native Web
  // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
  'react-native': 'react-native-web',
  // Allows for better profiling with ReactDevTools
  ...(isEnvProductionProfile && {          'react-dom$': 'react-dom/profiling',
  'scheduler/tracing': 'scheduler/tracing-profiling',        }),
  ...(modules.webpackAliases || {}),        
  moment$: 'moment/moment.js'
},

Une autre façon de résoudre ce problème consiste à remplacer moment.js par Day.js. Suivez les instructions de cette URL pour utiliser react-app-rewired >> https://ant.design/docs/react/use-with-create-react-app. Modifiez package.json selon les instructions. Créez ensuite un fichier config-overrides.js dans le dossier racine comme ci-dessous. Cela a l'avantage de réduire le js de 231.11kb à 11.11kb selon ce https://github.com/ant-design/antd-dayjs-webpack-plugin.

const { override, addWebpackPlugin } = require('customize-cra');    
const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin');

module.exports = override(
        addWebpackPlugin(new AntdDayjsWebpackPlugin())
);

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

Correction fantastique !!!

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

A travaillé pour moi

il semble que la racine du problème ait été causée par le champ "module" dans package.json (https://github.com/moment/moment/commit/9ce89e7fea881b39be23b8c0646f7ef7817985d9)

voici PR pour le réparer https://github.com/moment/moment/pull/5503

Oui, la suppression de "module": "./src/moment.js", de package.json fait disparaître l'avertissement pour moi. BTW, la mienne est une application React -- create-react-app et j'utilise "moment": "^2.25.1" . Même si j'utilisais la dernière version, j'obtenais toujours cette erreur, mais la mise à jour du package.json semble résoudre le problème. Merci @ApacheEx

J'ai corrigé cette erreur, du moins pour moi.

Je suis allé à node_modules/moment/src/lib/locale/
Modification du fichier locales.js, ctrl+f et recherche de la ligne './locale'+name .
Remplacez-le par './'+name .
Je ne sais pas pourquoi pointe vers le même dossier et '/.locale' + nom, c'est pourquoi l'erreur dit ne peut pas résoudre ./locale

Pour être honnête, j'ai copié la ligne d'origine et commenté juste au-dessus, si à l'avenir une erreur apparaît.

Si ça aide, bravo. Ce genre d'erreurs sont les pires...

Ayant le même problème, je suis revenu à 2.24 jusqu'à ce qu'un correctif soit disponible. Je ne peux pas éditer les fichiers du module, car je construis sur un serveur automatique, j'attends donc une version officielle.

J'ai le même problème avec les versions 2.24 et 2.25.1
WARNING in ./node_modules/moment/src/lib/locale/locales.js

Lorsque j'ouvre la console du navigateur, je vois cette erreur :
TypeError: Cannot read property 'defineLocale' of undefined at locales.min.js:1

Nous avons le même problème avec le moment 2.22

Il suffit d'importer comme ci-dessous et c'est le travail :

importer le moment à partir de « moment/moment » ;

Où placer cette ligne ?

Il suffit d'importer comme ci-dessous et c'est le travail :
importer le moment à partir de « moment/moment » ;

Où placer cette ligne ?

Dans le fichier que vous souhaitez, utilisez momentjs sur ecmascript comme ci-dessous :

import moment from 'moment/moment';
(() => {
const now = moment(moment.now());
console.log(now);
})

2.25.3 devrait résoudre ce problème.
Veuillez ouvrir un autre numéro si vous avez encore des problèmes.
Ou, vous pouvez essayer Stack Overflow pour des questions plus individuelles.

Cet alias avec la configuration WebPack résout un problème pour moi :

resolve: {
  extensions: ['.js', '.ts'],
  alias: {
    './locale': 'moment/locale'
  }
}

Si vous utilisez moment-timezone :
https://github.com/moment/moment-timezone/issues/837

je corrige ça avec ça :

import moment from 'moment'; import 'moment/locale/pt-br';

cela fonctionne, et la locale est définie sur 'pt-br', et toutes les autres langues fonctionnent également.

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