Moment: Modul nicht gefunden: Fehler: '../moment' kann nicht mit Webpack und TypeScript aufgelöst werden

Erstellt am 11. Jan. 2019  ·  9Kommentare  ·  Quelle: moment/moment

Beschreibe den Fehler

Wenn ich versuche, meine TypeScript-App mit Webpack zu kompilieren, erhalte ich für jedes Gebietsschema eine Fehlermeldung, dass '../moment' nicht aufgelöst werden kann.

Dieser Fehler wird für jedes andere Gebietsschema wiederholt:

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

Fortpflanzen

src/app.ts

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

Paket.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" } } ] }
}

Erwartetes Verhalten

yarn run webpack -p sollte ohne Fehler funktionieren.

Momentspezifische Umgebung

  • Windows 10
  • Knoten 10.15.0
  • Moment 2.23.0
  • TypeScript 3.2.2
  • Webpack 4.28.3
  • Zeitzone: MEZ (UTC+1)

Führen Sie den folgenden Code in Ihrer Umgebung aus und fügen Sie die Ausgabe ein:

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

Dieser Code schlägt mit den gleichen Fehlern fehl!

Hilfreichster Kommentar

Ich stand vor dem gleichen Problem, hier war das Problem-

  • Ich habe es mit dem benutzerdefinierten Befehl npm i --save react-moment installiert, der gerade in der Datei package.json hinzugefügt wurde, aber lib war nicht in node_modules vorhanden
  • npm install --save moment react-moment
  • und jetzt funktioniert es wie erwartet.

Alle 9 Kommentare

Danke, dass Sie diese Anfrage geöffnet haben.
Dies ist eine großartige Frage für Stack Overflow .

Das ist ein Bug, nicht wahr? Stack Overflow ist gut für Fragen, aber niemand wird dort Fehler beheben.

Ich interpretiere Ihre Antwort so, dass Sie WebPack mit TypeScript nicht unterstützen. Schade!

Im Internet gibt es verschiedene Tutorials zur Verwendung von Moment mit Webpack und TypeScript. Es scheint, dass viele andere sie gut zusammen verwenden. Wenn mehr Leute dieses Problem haben und es genügend Community-Wissen gibt, um es zu beheben, können wir versuchen, dies zu tun.

Ich hatte übrigens das gleiche Problem - scheint durch Moment-Locales verursacht zu werden, die mir egal waren. Ich habe in diesem Online-Artikel eine Lösung gefunden, die in meinem Fall gut genug war, um das Locales-Plugin zu ignorieren:

Plugins: [neues webpack.IgnorePlugin(/^.\/locale$/, /moment$/)]

Dies scheint ein ziemlich Mainstream-Nutzungsszenario zu sein, daher würde ich empfehlen, aus dem TypeScript-Abschnitt der Dokumentation auf die obige Seite zu verlinken.

@authguidance-examples PRs sind willkommen unter https://github.com/moment/momentjs.com !

Ich stand vor dem gleichen Problem, hier war das Problem-

  • Ich habe es mit dem benutzerdefinierten Befehl npm i --save react-moment installiert, der gerade in der Datei package.json hinzugefügt wurde, aber lib war nicht in node_modules vorhanden
  • npm install --save moment react-moment
  • und jetzt funktioniert es wie erwartet.

Weiß jemand, warum immer "vor ein paar Sekunden" angezeigt wird? was auch immer das datum ist

Ich habe den Moment in Reactjs hinzugefügt: import * as moment from "moment"; und in der Dependecy Injection hinzugefügt: "moment": "2.23.0", aber immer die

undefinierter Fehler... in Reactjs,
Freundlich helfen...

Warum ist diese Filiale nicht geschlossen? Letzter Kommentar am 2. Dezember 2019. @marwahaha

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen