Moment: Webpack-Fehler: Kann das Modul "./locale" nach dem Update auf 2.19.0 nicht finden

Erstellt am 10. Okt. 2017  ·  149Kommentare  ·  Quelle: moment/moment

Bearbeiten: Wenn Sie Ihre Abhängigkeit auf 2.18.1 setzen, ist alles in Ordnung.
Bearbeiten 2: Setze "moment": "2.18.1" in deinem package.json
Bearbeiten 3: Wir glauben, dass dies behoben ist.

Hallo.
Verwenden der Create-React-App. Nach dem Update auf 2.19.0 habe ich diesen Fehler beim Laden:

Fehler: Kann Modul "./locale" nicht finden
-> 9 Stack-Frames wurden zusammengeklappt.
./src/utils/Utils.js
src/utils/Utils.js:1

1 | Moment aus 'Moment' importieren

Hilfreichster Kommentar

@patricksteenks : ja. Beheben Sie dies in Ihrem package.json "moment": "2.18.1"

Alle 149 Kommentare

Ich habe das gleiche und bestätige diesen Fehler.

Ich auch

Kann bestätigen:

This relative module was not found:

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

OK, wir werden uns das ansehen, aber es wird nicht sehr schnell gehen.

Wir haben den Namen der Anforderungsfunktion geändert, wenn jemand sehen/untersuchen kann, ob sie verlinkt ist mit:

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

Selbes Problem hier. Würde ein Downgrade das Problem beheben?

Das gleiche hier, mehrere Apps, an denen ich arbeite, sind kaputt.

@patricksteenks : ja. Beheben Sie dies in Ihrem package.json "moment": "2.18.1"

@ichernev hey, aber ich verwende das Gebietsschema ohne zu importieren. Verwenden Sie einfach import moment from 'moment' und verwenden Sie so moment(date).locale('uk').format('ddd') . Wie ich verstanden habe, haben Sie den Import in locale geändert. Wie kann ich das in meinem Fall beheben?

Gleiches Problem beim Angular-CLI-Build-Projekt

Bestätigt.

VueJS 2 Webpack-Builds sind ebenfalls betroffen. Temp Fix ist wie von GautierT vorgeschlagen (downgrade momentjs)

package.json (Problem mit Moment-Zeitzone ab Moment 2.19)

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

package.json (Problem im Allgemeinen)

    "moment": "2.18.1"

Ich kann bestätigen, dass dies auch passiert!

ich kann bestätigen.
Paket.json

"moment": "2.18.1"

@renedx nur diese Zeile genug

Gleiches in einer Angular 4-Anwendung.
Gerade auf 2.18.1 herabgestuft (strenge Versionsnummer in package.json)

Wurde auch davon getroffen. Ich vermute, dass Webpack etwas Magie tut, um das dynamische "erforderlich" zu erkennen und es unter dem neuen Namen nicht mehr erkennen kann, und daher werden die Gebietsschemas nie in das Paket gebündelt.

(Übrigens, diese ganze Situation klingt sehr nach genau dem, wofür dynamische ES6-Importe da sind. Wir können träumen :-)

Ich verwende im Webpack von dieser Seite

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

Jetzt entfernen

Und in bedarf

const moment = require('moment');

Jetzt

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

Streng genommen denke ich, dass die Angular-Verbindung einfach daran liegt, dass die meisten Angular-Projekte Angular-CLI verwenden, die intern Webpack verwendet. Es kann jedoch mit einer bestimmten Webpack-Konfiguration in diesem Stapel zusammenhängen.
Es scheint jedoch ein ziemlich allgemeines Bündelungsproblem zu sein.

Tut Buße, tut Buße, der Weltuntergang ist da!

Hier gilt das gleiche.

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

Das gleiche hier - ich habe es mit einer Garnfunktion behoben, um die Standardeinstellungen eines Pakets zu überladen:

Platzieren Sie dies in Ihrem Hauptpaket.json (passen Sie "moment-timezone" an den Namen des Pakets an, das moment lädt, wenn Sie moment nicht direkt laden):

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

genau wie ein 10km Asteroid .... das gleiche hier ...

Was ist die ETA für die Reparatur?

Okay, hier sind wir:

  • Wenn Sie Ihre Abhängigkeit auf 2.18.1 setzen, ist alles in Ordnung.
  • Dies ist ein Problem mit https://github.com/moment/moment/pull/4213
  • Ich habe sowohl das Webpack als auch die nativen Teams engagiert, um darüber zu sprechen, welche Lösung für alle Parteien funktioniert
  • Da das Festlegen der Abhängigkeit auf 2.18.1 eine einfache Minderung bietet, möchte ich derzeit kein Rollback durchführen. Stattdessen würde ich gerne das Feedback von Webpack und React Native abwarten, um zu sehen, ob wir eine Einigung darüber erzielen können, was zu tun ist, um diese Situation voranzubringen . Aus diesem Grund habe ich keine ETA für einen Fix.
  • Ein MCVE finden Sie hier: https://github.com/mj1856/moment-webpack-test

Bestätigter Fehler beim Ausführen der mit create-react-app CLI erstellten React-App.

Diese Herabstufung des Moments und der monent-timezone-Version wurde behoben.

npm install [email protected] als temporäre Lösung, damit Sie package.json mehrmals aktualisieren müssen. Dies wird wahrscheinlich bald behoben, dann können Sie npm i tun.

@aheissenberger das hat mir das Leben gerettet, ich hatte das gleiche Problem mit rc-calendar, kann bestätigen Es funktioniert für Garn 1.2.0.

Gleiches Problem Webpack 3.6.0 + Moment 2.19.0. Funktioniert gut mit 2.18.1

Andere haben möglicherweise dasselbe Problem: Obwohl ich nicht auf 2.19.0 aktualisiert habe, hatte ich in meiner package.json ^2.18.1 . Ich habe es in 2.18.1 ohne ^ geändert und jetzt wird nichts höher als 2.18.1 installiert, bis wir wissen, dass 2.19.x sicher ist

@ichernev scheint sehr wahrscheinlich, dass die Umbenennung von 'require' diese weit verbreiteten Brüche verursacht. Ich vermute, dass, wenn Sie Module mit einer solchen Referenz benötigen, Webpack den Import nicht erkennen kann, da es die statische AST-Analyse verwendet, um Abhängigkeiten zu bestimmen.

Vielleicht könnten Sie einige Details zu dem React Native-Problem angeben, das behoben wurde, da es möglicherweise einen besseren Weg gibt, dieses ursprüngliche Problem zu umgehen?

In unserem Projekt verwenden wir yarn 1.0.2 , create-react-app und diese Deps in 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"
 }

Obwohl wir "moment": "2.18.1" , bekommen wir immer noch
screen shot 2017-10-10 at 3 53 43 pm

Gibt es eine Problemumgehung für das Garn?

@ggsjyoon : Ich hatte eine ähnliche Situation (

+1

@ggsjyoon es könnte eine zusätzliche Anforderung von einem deiner Pakete geben (zB moment-timezone) - du kannst meinen Tipp https://github.com/moment/moment/issues/4216#issuecomment -335489518 verwenden, um dies mit Garn zu beheben

Am Ende bin ich darüber hinweggekommen, indem ich geändert habe:

import * as moment from 'moment';

zu:

import * as moment from 'moment/moment';

+1

@morrisonbrett Das funktioniert. Danke

Die Bestätigung des Vorschlags von

@maggiepint Wenn @morrisonbrett funktioniert hat , denke ich, dass #4213 möglicherweise nicht das Problem ist. 2.19 führte eine weitere neue Änderung ein, das Modulfeld in package.json - dh früher verwendete Webpack die transpilierte Version.

Das Einschalten von ES6 für React Native verursachte die meisten Probleme, die #4187 blockierten, und #3904 (nur für eine ganze Weile im Develop-Zweig) führte für alle Webpack-Benutzer zu derselben Änderung.

@tqc - es ist wahrscheinlich beides. @thelarkinn hat bereits bestätigt, dass Webpack die erforderliche Dynamik nicht möchte.

Gleiches Problem hier, irgendwelche Updates?

@maggiepint Ja, mir wurde gleich nach dem Schreiben dieses Kommentars klar, dass der Fehler am Ende des Threads am Anfang nicht ganz derselbe war. Die ES6-Seite der Dinge könnte mit etwas wie module.exports = require(‘moment’).default behoben werden, aber ich bin mir nicht sicher, ob dies noch Baumzittern zulässt, und Knotenharmonie mag es nicht, Import und Anforderung zu mischen.

per Webpack-Aliasing gelöst:

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

Kann jemand alle Bits aus 2.19 herausfinden, die das Webpack kaputt gemacht haben, einen minimalen PR (basierend auf 2.19.0) vorschlagen, der die "schlechten" Teile rückgängig macht, und wir werden erwägen, es für 2.19.1 zusammenzuführen.

"Ich auch" zum 1000-mal zu sagen, bringt nicht viel auf den Tisch.

Die Lösung von @morrisonbrett funktioniert import * as moment from 'moment/moment';

Ich kann das gleiche Problem mit Angular-CLI v1.4.4 bestätigen. Ich war zunächst überrascht, als ich den Fehler mit momentjs sah, da mein Projekt ihn nicht verwendet, aber nach der Untersuchung habe ich seine Injektion auf WebPack zurückverfolgt.

Hier ist meine Warnmeldung beim Erstellen:

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

Ich habe auch die Methode import * as moment from 'moment/moment'; ausprobiert, aber kein Glück für meinen Fall.

Hey @kud , @AleshaOleg – falls du immer noch versuchst, Gebietsschemas zu importieren:
anstatt:
import 'moment/locale/*
Versuchen:
import 'moment/src/locale/*'

Kämpfe hier mit dem gleichen Problem...
–––
@AleshaOleg : In Ihrem Anwendungsfall denke ich, dass es sein könnte:
import moment from 'moment'
import 'moment/src/locale/uk'
und dann ruf einfach moment(date).format('ddd')

Danke @dianco !

Ich habe dieses Problem beim Aktualisieren auf 2.19.0 gelöst, indem ich den Code, der versucht, Gebietsschemas zu laden, vollständig deaktiviert habe.

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

Ich habe dann manuell import 'moment/src/locale/ja' , import 'moment/src/locale/pt-br' usw. hinzugefügt, wie es von meiner Anwendung benötigt wird, anstatt alle Gebietsschemas zu laden. Wenn Sie kreativ sind, können Sie stattdessen dynamische import() s verwenden, um nur die Sprache zu laden, die Ihre Anwendung benötigt.

Es ist sehr wichtig , dass Sie in diesem Fall nicht import 'moment/locale/foo' , sondern import 'moment/src/locale/foo' tun. Aufgrund der Art und Weise, wie die Gebietsschemadateien versuchen, auf moment selbst zu verweisen, bündeln sie stattdessen eine zweite Kopie von moment (diesmal das UMD-Build im Gegensatz zum ESM-Build) und das wird in wieder alle Gebietsschemas laden.

Ich hoffe, das hilft jemandem (Optionen 1 und 2 aus dem obigen Kommentar, danke an @patsissons ):
-Wenn Sie keine Module haben, die moment.js laden, Ihre App jedoch dies tut, wechseln Sie einfach zu einer älteren Version
-Wenn Sie Module haben, die auch moment.js in Abhängigkeiten haben, hilft Ihnen das oben genannte nicht, Sie müssen Ihre Webpack-Konfiguration ändern:
{...
beschließen: {
...
alias: {
'Moment$': 'Moment/Moment',
}
}
}

-Aber wenn Sie React-Create-App verwenden (wie ich) und Sie so schnell wie möglich einen funktionierenden Build haben müssen, die einzige Option für Sie, um 'npm eject' auszuführen, haben Sie auf diese Weise Zugriff auf die Webpack-Konfiguration und zweitens Option wird für Sie verfügbar sein.

Es tut mir also leid, aber die einzige Methode, die hier funktionierte, war die von @patsissons . https://github.com/moment/moment/issues/4216#issuecomment -335637520

Immer noch

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

aber im Webpack hinzufügen

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

Aus irgendeinem Grund ignorierte Garn meine Einstellung "Auflösungen" von package.json.
Eine hackige Möglichkeit, das Problem zu beheben, wenn Sie Moment-Timezone verwenden, besteht darin, das Garn.lock zu bearbeiten

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

Wir warten auf Fix 2.19.1....

Könnte hier jemand beschreiben, was das eigentliche Problem ist? Ist es einfach, dass Webpack das Alias-require() nicht identifiziert?

@TomMettam 2.19.0 wies Webpack auf den es6-Code in moment/src/moment hin, der nicht ganz dieselbe Schnittstelle wie moment/moment exportiert.

Darüber hinaus verhindert das Alias-Requirement, dass Webpack alle Dateien verpackt, die möglicherweise dynamisch angefordert werden könnten. Das manuelle Importieren der Locale-Dateien würde funktionieren, außer dass die offensichtliche Wahl des Importierens von moment/locale sie in eine andere Instanz von moment lädt als die, die Sie tatsächlich verwenden.

Und wenn das alles zu einfach ist, gibt es Unterschiede im Verhalten verschiedener Versionen von Garn/npm - ich verwende zufällig eine Version von npm, die jede Instanz des Pakets verwendet, die sich im Root-App-Ordner node_modules befindet, aber andere Versionen machen Es ist schwieriger, das verwendete Paket zu überschreiben.

Wer hat entschieden, dass das Ändern der Exportsignatur in einer Nebenversion eine gute Idee ist?

Beachten Sie, dass dies auch Bibliotheken von Drittanbietern unterbricht, die sich auf den Moment verlassen

+1

Es ist nicht akzeptabel für ein kleineres Upgrade.

Ich verstehe die Idee dahinter, aber seien Sie bitte strenger in Bezug auf Semver.

@darkalor es war nicht beabsichtigt - die fragliche

@darkalor @kud - Rückschritte passieren. Bitte versuchen Sie, konstruktiv zu sein; jedem ist bewusst, dass dies nicht hätte passieren dürfen und schimpfen hilft niemandem.

@TomMettam Ja, es passiert, aber wenn es passiert, können Sie damit umgehen, und damit meine ich, Sie könnten es als Major und nicht als Minor aktualisieren. Das ist alles. Ich gebe niemandem die Schuld, ich gebe der Situation die Schuld, dass es in diesem Fall ziemlich falsch ist, wenn jemand denkt "Oh, ok, ich kann ein Upgrade durchführen, da es sich nur um eine Minderjährige handelt". ;)

Ich schätze all die Arbeit, die im Moment geleistet wurde, aber ich spreche nur über die instabile Situation.

Ich beleidige niemanden, tut mir leid.

@kud nicht, wenn Sie die Versionsnummer auswählen müssen, bevor Sie wissen, dass die Regression existiert. Die Komplexität, die erforderlich ist, um die Anzahl der Umgebungen zu unterstützen, die moment tut, ist ziemlich beeindruckend.

@tqc aber jetzt weißt du es, das ist die Sache. Wie bereits von @TomMettam gesagt , passiert es.

Das Entfernen oder/und Hinzufügen von Tags ist möglich.

Wie auch immer, ich werde hier nicht mehr spammen, danke für die Problemumgehung; Ich habe im Changelog eine Notiz für andere Personen hinzugefügt, die dieses Problem nicht verfolgen: https://gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603#gistcomment -2226628

Ich wünsche ihnen einen wunderbaren Tag. :)

Ich verwende Garn als Paketmanager. Aus irgendeinem Grund wurde meine Datei "Garn.lock" nicht aktualisiert, um die Änderung widerzuspiegeln, die ich in meiner Datei package.json vorgenommen habe. meine Einstellungen wie @daniesy sagte. Das Problem war Moment-Zeitzone in meiner Garn.lock-Datei war immer noch abhängig von der Moment-Version '^2.18.1'.

Um es zu beheben, habe ich einen Garn-Cache sauber ausgeführt :
yarn cache clean

Dann :
yarn install

Hoffentlich sollte dies Ihre Garn.lock- Datei mit etwas in der Richtung neu generieren:

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

Überprüfen Sie in jedem Fall, ob Ihre Garnsperre nicht versucht, eine Momentversion größer als 2.18.1 in ein Modul aufzunehmen, insbesondere Moment-Zeitzone und Moment.

Ich denke, wir haben eine Lösung: https://github.com/moment/moment/pull/4232

Das Beste daran - ich denke, das wird sowohl für Webpack als auch für nativ reagieren - keine Traurigkeit!
Ich habe in Webpack getestet, aber würde jemand mit einem nativen Test reagieren? Beachten Sie, dass Sie grunt release ausführen müssen, um die Dateien zu erstellen, bevor Sie mit einer npm-Verknüpfung testen können.

@maggiepint -

2.19.1 ist raus, probiere es aus

Funktioniert bei mir mit Webkit.

Danke @ichernev und alle Beteiligten!

@ichernev : 2.19.1 funktioniert für mich.
Reagiere 16.
Erstellen-Reagieren-App.
Nicht ausgeworfen

Moment geladen wie folgt:

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

Danke für die Fehlerbehebung. 👍

Habe gerade einen weiteren VSTS-Build mit angle-cli/webpack gefeuert und in der Umgebung neu bereitgestellt

Alles wieder normal

Danke

Auch ich kann bestätigen, dass dieses Problem für Angular-CLI v1.4.4 behoben wurde. Danke schön!

funktioniert mit typescript/webpack/karma/phantomjs. Danke für die Fehlerbehebung!

Damit es funktioniert, habe ich nur die Locale-Datei vor dem Moment eingefügt.
import 'moment/locale/de'; import moment from 'moment';
und später tat
moment.locale("de");

scheint noch in "Version": "2.22.2" vorhanden zu sein?

Ich verwende auch 2.22.2. das problem besteht immer noch

Ich verwende 2.22.2 und sehe das gleiche Problem.

Wie oben. Gleiches Problem, gleiche Version.

Reagieren Sie native und sehen Sie diesen Fehler für einen Release-Build:

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 funktioniert

funktioniert bei mir immer noch nicht

Ich bekomme 2.18.1 auch nicht zum Laufen

2.22.1 ftw lol

Bemerkte auch eine Regression in v2.22.2. Rollback auf 2.22.1 hat es für mich behoben.

Hallo allerseits,

Hatte das gleiche Problem (mit Webpack in Laravel). Dies ist nicht ideal, aber eine schnelle Lösung, die für mich funktioniert hat, besteht darin, den Ordner "locale" des Repositorys neben die Datei moment.js oder moment-with-locale.js zu kopieren.

Läuft auch auf v2.22.2 .

Damit es funktioniert, habe ich nur die Locale-Datei vor dem Moment eingefügt.
import 'moment/locale/de'; import moment from 'moment';
und später tat
moment.locale("de");

@ mj1856 ist es angemessen, dieses Problem erneut zu öffnen oder sollten wir ein neues / neues erstellen? Das sehe ich auch wieder. Ein Rollback auf 2.22.1 hat es in meinem Fall nicht behoben und ich musste @patsissons Fix verwenden , um Webpack wieder glücklich zu machen.

gleich

Ich habe allowSyntheticDefaultImports verwendet, wie im Dokument hier erklärt: https://momentjs.com/docs/#/use -it/typescript/ und es hat den Fehler Cannot find module "./locale" für mich behoben. Beachten Sie, dass // @ts-ignore über dem Import auch in meiner IDE benötigt wurde.

gleiche Frage, moment:'2.18.1'

Wird dies immer noch empfohlen: import moment from "moment/min/moment-with-locales"; ?

b/c Ich bekomme denselben (?) Fehler mit [email protected] und CRA:

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

Für all diese Internet-Passanten ist hier eine Möglichkeit, das Problem zu beheben, wenn Sie mit Rollup erstellen:

Angenommen, Sie verwenden 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 hat einen package.json Eintrag für jsnext:main den wir hier nutzen können. um die Gebietsschemas für uns während des Build-Prozesses einzubeziehen. Ihre Bundle-Größe wird zunehmen, aber die Konsolenfehler werden verhindert 😅

Ich habe das gleiche Problem mit Momentversion 2.24.0 in meiner React-Anwendung. Ich denke, dieses Problem ist noch nicht gelöst.

Ich habe das gleiche Problem mit Momentversion 2.24.0 in meiner React-Anwendung. Ich denke, dieses Problem ist noch nicht gelöst.

Bestätigen. "moment": "2.24.0". 2.18.1 das Problem nicht lösen. Knoten v12.16.0

Das gleiche hier, mit 2.24.0 für mein Preact-Projekt.

Dieses Problem tritt immer noch auf, bitte helfen Sie!

Für mich kaputt: "moment": "^2.24.0" (Auflösung zu 2.25.0)
Nicht kaputt: "Moment": "2.24.0"

Wenn Sie Garn verwenden, fügen Sie den Auflösungsblock hinzu, um Versionen der Unterabhängigkeit zu überschreiben:

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

Verwenden Sie "moment": "2.24.0" und wie von @rilyu vorgeschlagen, verwenden Sie die Auflösung. Hat bei mir funktioniert.

Das Zurücksetzen auf "2.24.0" und das Entfernen des "^" hat bei mir funktioniert. Sieht so aus, als ob ihre neueste Version letzte Nacht geschoben wurde und sie abwirft.

Problem mit "moment": "^2.24.0", .
Uncaught Error: Cannot find module './locale' at

Gleicher Fehler. Gelöst mit @enewhuis- Lösung. Danke!

Gleicher Fehler. Gelöst mit @enewhuis- Lösung. Danke, Mann.

Problem mit Lösung @enewhuis und @rilyu behoben. Danke.

Gleicher Fehler. @enewhuis Lösung zur Rettung

Für mich kaputt: "moment": "^2.24.0" (Auflösung zu 2.25.0)
Nicht kaputt: "Moment": "2.24.0"

Danke Mann, ich kämpfe den ganzen Tag damit

Gleicher Fehler und gleiches Fix hier. Ich habe Moment-Zeitzone verwendet.

Vor:

    "moment-timezone": "^0.5.28",

Nach:

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

Gleicher Fehler und gleiches Fix hier. Ich habe Moment-Zeitzone verwendet.

Vor:

    "moment-timezone": "^0.5.28",

Nach:

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

Funktioniert bei mir nicht mit -

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

Der obige Fix funktioniert bei mir nicht. Knoten v12.6.0, Garn v1.22.4, React-Scripts-ts

Hat bei uns gearbeitet mit

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

und

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

mit garn

Ohne den Auflösungsblock ging es nicht.

Ja, ich kann bestätigen, dass das Hinzufügen des resolutions Blocks für mich funktioniert hat. Ich habe allerdings keine Ahnung warum...

Danke @mtogstad !

@mtogstad- Lösung funktioniert!

Ich verstehe nicht, wie dieser Fehler zufällig auftauchen und meine Reaktions-App zerstören kann

@bodyfarmer können Sie bitte Schritte aufschreiben, wie Sie das Problem lösen?
Ich habe das gleiche Problem mit der React-App.

@hasanmehmood In meinem Fall hat es gereicht, um eine Herabstufung der momentanen Abhängigkeiten auf diese Weise in CMD vorzunehmen:

npm install [email protected]

Hoffe das funktioniert auch bei dir.

Hallo Leute!
Ich hatte das gleiche Problem aus den letzten Stunden und habe es schließlich durch Ändern der Momentversion gelöst.

In den obigen Kommentaren sah ich die endgültige Lösung.

Grund:
_Moment Release der neuen Version vor 17 Stunden von 2.24.0 bis 2.25.0_

Lösung:
Schritt 1: Ändern Sie die Versionen

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

Schritt 2: Wenn Sie Garn verwenden, fügen Sie bitte Auflösungen in Ihrer package.json-Datei wie folgt hinzu
"Abhängigkeiten" {
"moment": "2.24.0",
"moment-timezone": "^0.5.28"
},
"Auflösungen": {
"moment": "2.24.0"
},

Danke schön.

Danke, @jolalla , ich habe zuerst versucht, die Version herunterzustufen, aber es hat bei mir nicht funktioniert. Schließlich zeigte das Hinzufügen des Auflösungsblocks etwas Magie :)

Für andere, die mit ihrer React-App vor einem ähnlichen Problem stehen. Sie können die folgenden 2 Schritte ausführen, um das Problem zu beheben.

In Abhängigkeiten ersetzen
"moment": "^2.24.0",
mit
"moment": "2.24.0",

Und fügen Sie den Auflösungsblock in package.json hinzu

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

Warum ist dieses Thema geschlossen!?!??!?

Guter Zeitpunkt, um auf Luxon umzusteigen, was ich für ein Projekt getan habe, das eine geringe Momentnutzung hatte.

Habe das gleiche Problem
"Auflösungen": {
"moment": "2.24.0"
}
mein Problem lösen.
Danke.

Kann ich noch etwas versuchen? "moment": "2.24.0" , und
"resolutions": { "moment": "2.24.0" }
reparieren es nicht für mich. Dies ist für eine Heroku-Bereitstellung. Alle Ideen werden geschätzt.

Wenn zufällig jemand anderes ein Monorepo hat (und/oder Arbeitsbereiche in package.json verwendet), funktioniert der Fix 'resolutions' zur Verwendung der vorherigen Version 2.24.0 nur, wenn er in der root-Ebene package.json angewendet wird. In unserem Fall mussten wir Folgendes tun:
{ „Auflösungen“: { „**/Moment“: „2.24.0“ } }.

Ich hoffe wirklich, dass die Version 2.25 so schnell wie möglich behoben wird!

Wenn Sie Garn verwenden, fügen Sie den Auflösungsblock hinzu, um Versionen der Unterabhängigkeit zu überschreiben:

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

Ich beschäftige mich seit einer Stunde damit. Entfernen von ^ hilft.

Für Leute, die create-react-app verwenden und CRA nicht auswerfen möchten, können Sie Folgendes installieren:

Erstellen Sie dann ein config-overrides.js im Stammverzeichnis Ihres Projekts zum weiteren Überschreiben.

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

Bearbeiten Sie Ihre package.json:

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

Da ich Ameisendesign verwende, sieht mein config-overrides.js aus:

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

Aber deines wird einfacher sein, etwa so, denke ich:

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

Danke, @jolalla , ich habe zuerst versucht, die Version herunterzustufen, aber es hat bei mir nicht funktioniert. Schließlich zeigte das Hinzufügen des Auflösungsblocks etwas Magie :)

Für andere, die mit ihrer React-App vor einem ähnlichen Problem stehen. Sie können die folgenden 2 Schritte ausführen, um das Problem zu beheben.

In Abhängigkeiten ersetzen
"moment": "^2.24.0",
mit
"moment": "2.24.0",

Und fügen Sie den Auflösungsblock in package.json hinzu

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

Funktioniert bei mir. Danke

@hasanmehmood bei mir hat es funktioniert, danke Mann

Danke, @jolalla , ich habe zuerst versucht, die Version herunterzustufen, aber es hat bei mir nicht funktioniert. Schließlich zeigte das Hinzufügen des Auflösungsblocks etwas Magie :)

Für andere, die mit ihrer React-App vor einem ähnlichen Problem stehen. Sie können die folgenden 2 Schritte ausführen, um das Problem zu beheben.

In Abhängigkeiten ersetzen
"moment": "^2.24.0",
mit
"moment": "2.24.0",

Und fügen Sie den Auflösungsblock in package.json hinzu

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

Funktioniert bei mir auch! Danke schön!! :D

Mache dies seit Stunden auf meiner eckigen 8-App mit npm.

  1. Ich habe von Moment 2.17 auf 2.24 aktualisiert
  2. Ich habe die Auflösungen wie oben beschrieben hinzugefügt - "devDependencies": {...},"resolutions": { "moment": "2.24.0" } zu package.json
  3. Gehen Sie wie folgt vor, um zu Garn zu wechseln. rm -rf node_modules package-lock.json && yarn
    Vielen Dank, Jungs

Ich bin ziemlich verzweifelt... Ich benutze Moment 2.25.1 und ändere die "devDependencies": {...},"resolutions": { "moment": "2.25.1" } wie oben... nicht Arbeiten

ich verwende npm. Ich bin ein Neuling in Reagieren wo ist devDependencies?
Ich habe das geändert, aber es funktioniert immer noch nicht
Capture

Ich verwende Version "2.25.1" und es passiert immer noch!

@m4mariaoni - das liegt daran, dass du ohne --save-dev installiert hast, also

Wenn dieses Problem nach dem Sperren von Moment auf 2.24.0 immer noch auftritt, nuke den Moment-Ordner von node_modules und installiere deine Pakete mit npm install --save

Danke, @jolalla , ich habe zuerst versucht, die Version herunterzustufen, aber es hat bei mir nicht funktioniert. Schließlich zeigte das Hinzufügen des Auflösungsblocks etwas Magie :)

Für andere, die mit ihrer React-App vor einem ähnlichen Problem stehen. Sie können die folgenden 2 Schritte ausführen, um das Problem zu beheben.

In Abhängigkeiten ersetzen
"moment": "^2.24.0",
mit
"moment": "2.24.0",

Und fügen Sie den Auflösungsblock in package.json hinzu

"Auflösungen": {
"moment": "2.24.0"
}

Funktioniert bei mir auch! Danke schön!! :Ddenkt!

Danke, @jolalla , ich habe zuerst versucht, die Version herunterzustufen, aber es hat bei mir nicht funktioniert. Schließlich zeigte das Hinzufügen des Auflösungsblocks etwas Magie :)

Für andere, die mit ihrer React-App vor einem ähnlichen Problem stehen. Sie können die folgenden 2 Schritte ausführen, um das Problem zu beheben.

In Abhängigkeiten ersetzen
"moment": "^2.24.0",
mit
"moment": "2.24.0",

Und fügen Sie den Auflösungsblock in package.json hinzu

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

Ersetzen

"moment": "^2.24.0",

mit

"moment": "2.24.0",

funktioniert bei mir! Das Übliche,
rm -rf package-lock.json && node_modules

Trotz aller oben genannten Maßnahmen funktioniert es immer noch nicht...

Das ist frustrierend

Zuvor erstellte Repositorys wurden Moment 2.24.0 mit React verwendet und es funktioniert immer noch, aber Moment2.24.0 jetzt installieren, funktioniert nicht.... (Ich habe auch alle oben genannten Maßnahmen ausprobiert)

Was ist die Ursache?

Ich könnte mir vorstellen, dass Sie irgendwo in einem package.json @wlsdud2194 eine ^2.24.0 anstelle von 2.24.0 haben?

Ich nicht, und trotzdem kommt der Fehler immer wieder. Es ist komisch

Moment-Version ist 2.24.0 in einer package.json anstelle von ^2.24.0 seit der Installation.

Ich habe diesen Prozess befolgt, eine der oben genannten Maßnahmen

  1. Auflösungsblock hinzufügen
  2. Entfernen Sie das Verzeichnis node_modules und installieren Sie das Paket von Garn neu.

funktioniert bei mir, weiß aber nicht warum...😂

Vielen Dank für Ihr Interesse :) @agrohs

Musste von ^2.25.1 auf 2.24.0 downgraden, um das Problem zu beheben

Ich nicht, und trotzdem kommt der Fehler immer wieder. Es ist komisch

Versuchen Sie, npm ls moment zu sehen, ob ein anderes Modul auch den Moment verwendet

Und fügen Sie den Auflösungsblock in package.json hinzu
"Auflösungen": {"Moment": "2.24.0"}

Entfernen Sie das Verzeichnis node_modules und installieren Sie das Paket von Garn neu.

rm -rf package-lock.json && node_modules

Kontakt: Herr Liu Tel: 18908205973
Fax: 028-86676917
E-Mail: [email protected]
Firmenname: Chengdu Shouzhi Technology Co., Ltd. Firmenwebsite: www.szdma.com
Adresse: Yinhai-Gebäude, Nr. 162, Binjiang East Road, Chengdu


Chengdu Shouzhi Technology Co., Ltd. wurde 2010 gegründet. Es ist ein professionelles Unternehmen für die Entwicklung von Softwareanpassungen für kleine und mittlere Unternehmen in Chengdu. Das Unternehmen bedient hauptsächlich kleine und mittlere Unternehmen. Es bietet den Bau von lokalen Netzwerken und Websites an Konstruktion, Software-Anpassungslösungen usw. und bietet manuelle Dienstleistungen Eine vollständige Palette von Dienstleistungen für die Computerbranche. Das Unternehmen hält sich an den Grundsatz "integrität-basiert, serviceorientiert", um das Firmenimage zu unterstreichen; durch unseren unermüdlichen Einsatz bieten wir unseren Kunden qualitativ hochwertige Dienstleistungen.

Wir erhalten Webpack Error: Cannot find module "./locale" Fehler. Wir verwenden in unserem Projekt das Paket 'react-redux-i18n', das von 'react-i18nify' und das wiederum von 'moment' abhängig ist. Intern ist 'moment' so konfiguriert, dass die neueste Version verwendet wird, die diesen Fehler verursacht.

npm

In Abhängigkeiten
"reagieren": "^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",

Jede Hilfe wäre sehr dankbar.

Der neueste Patch 2.25.3 scheint das Problem behoben zu haben, aktualisieren Sie die momentjs-Version auf: "moment": "^2.25.3" in package.json
Entfernen Sie den Ordner node_modules und führen Sie yarn install oder npm install aus.

Für diejenigen, die im Moment etwas Vertrauen verloren haben und nicht möchten, dass ihre Apps in Zukunft von diesem Problem komplett abbrechen - ich habe eine mittelgroße Codebasis ohne großen Aufwand auf Luxon umgestellt.

Danke Leute...

Ich habe die Version auf 24.0 geändert und die "Auflösungen": { "moment": "2.24.0" } hinzugefügt und npm install ausgeführt

Dann schien es wieder zu funktionieren (übrigens mit React).

Beifall!

Der neueste Patch 2.25.3 scheint das Problem behoben zu haben, aktualisieren Sie die momentjs-Version auf: "moment": "^2.25.3" in package.json
Entfernen Sie den Ordner node_modules und führen Sie yarn install oder npm install aus.

Danke @jasontll , bei mir

Keine dieser Lösungen hat heute bei mir funktioniert.

Mache das schon seit Stunden in meiner React App
mit 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

es hat auch bei Jungs funktioniert, vielen Dank :-)

Ich laufe auch in dieser Not. Ich habe es mit der neuesten Version von "moment": "^2.26.0" behoben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen