Moment: Module introuvable : erreur : impossible de résoudre '../moment' avec Webpack et TypeScript

Créé le 11 janv. 2019  ·  9Commentaires  ·  Source: moment/moment

Décrivez le bogue

Si j'essaie de compiler mon application TypeScript avec webpack, j'obtiens une erreur pour chaque paramètre régional que « ../moment » ne peut pas être résolu.

Cette erreur est répétée pour tous les autres paramètres régionaux :

ERROR in ./node_modules/moment/locale/km.js
Module not found: Error: Can't resolve '../moment' in 'C:\PROGS\dev\var\private\moment-test\node_modules\moment\locale'
 @ ./node_modules/moment/locale/km.js 5:50-70
 @ ./node_modules/moment/locale sync ^\.\/.*$
 @ ./node_modules/moment/moment.js
 @ ./src/app.ts

Reproduire

src/app.ts

import * as moment from "moment";
console.log(moment().format("YYYY"));

package.json

{
    "private": true,
    "dependencies": {
        "moment": "2.23.0"
    },
    "devDependencies": {
        "awesome-typescript-loader": "5.2.1",
        "typescript": "3.2.2",
        "webpack": "4.28.3",
        "webpack-cli": "3.2.1"
    }
}

tsconfig.json

{ "include": [ "./src/" ] }

webpack.config.js

module.exports = {
    entry: "./src/app.ts",
    output: { filename: "bundle.js" },
    resolve: { extensions: [".ts"] },
    module: { rules: [ { test: /\.ts$/, use: { loader: "awesome-typescript-loader" } } ] }
}

Comportement prévisible

yarn run webpack -p devrait fonctionner sans erreur.

Environnement spécifique à un moment

  • Windows 10
  • Nœud 10.15.0
  • instant 2.23.0
  • TypeScript 3.2.2
  • Webpack 4.28.3
  • Fuseau horaire : CET (UTC+1)

Veuillez exécuter le code suivant dans votre environnement et inclure la sortie :

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

Ce code échoue avec les mêmes erreurs !

Commentaire le plus utile

J'étais confronté au même problème, voici le problème-

  • Je l'ai installé à l'aide de la commande personnalisée npm i --save react-moment , qui vient d'être ajoutée dans le fichier package.json mais lib n'était pas là dans node_modules, donc pour ce faire, j'exécute
  • npm install --save moment react-moment
  • et maintenant cela fonctionne comme prévu.

Tous les 9 commentaires

Merci d'avoir ouvert cette demande.
C'est une excellente question pour Stack Overflow .

C'est un bug, n'est-ce pas ? Stack Overflow est bon pour la question, mais personne ne corrigera les bogues là-bas.

J'interprète votre réponse comme signifiant que vous ne prenez pas en charge WebPack avec TypeScript. Dommage!

Il existe divers tutoriels sur Internet sur l'utilisation de Moment avec Webpack et TypeScript. Il semble que beaucoup d'autres les utilisent très bien ensemble. Si plus de personnes ont ce problème, et qu'il y a suffisamment de connaissances de la communauté pour le résoudre, alors nous pouvons essayer de le faire.

En passant, j'ai eu le même problème - cela semble être causé par les paramètres régionaux du moment, dont je m'en fichais. J'ai trouvé une solution dans cet article en ligne , qui était assez bonne dans mon cas, pour ignorer le plugin locales :

plug-in : [nouveau webpack.IgnorePlugin(/^.\/locale$/, /moment$/)]

Cela semble être un scénario d'utilisation assez courant, je vous recommande donc de créer un lien vers la page ci-dessus à partir de la section TypeScript de la documentation .

Les PR de @authguidance-examples sont les bienvenus sur https://github.com/moment/momentjs.com !

J'étais confronté au même problème, voici le problème-

  • Je l'ai installé à l'aide de la commande personnalisée npm i --save react-moment , qui vient d'être ajoutée dans le fichier package.json mais lib n'était pas là dans node_modules, donc pour ce faire, j'exécute
  • npm install --save moment react-moment
  • et maintenant cela fonctionne comme prévu.

quelqu'un sait pourquoi toujours afficher comme "il y a quelques secondes" ? quelle que soit la date

j'ai ajouté le moment dans reactjs : import * as moment from "moment"; et dans l'injection de dépendance ajouté : "moment": "2.23.0", mais obtenir le

erreur indéfinie... dans reactjs,
Aide aimablement...

Pourquoi cette succursale n'est-elle pas fermée ? Dernier commentaire le 2 décembre 2019. @marwahaha

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