Moment: Webpack - Kritische Abhängigkeit: Die Anforderung einer Abhängigkeit ist ein Ausdruck mit 2.25.0

Erstellt am 1. Mai 2020  ·  35Kommentare  ·  Quelle: moment/moment

Heute Morgen habe ich ein Upgrade von 2.24.0 auf 2.25.0 durchgeführt und diese Warnung von meinem Webpack-Build erhalten:
Critical dependency: the request of a dependency is an expression

Von mir verwendete Versionen:
Schluck - 4.0.2
Webpack - 4.43.0
Babel - 7.9.6

Dazwischen gab es keine weiteren Updates. Nur moment.js wurde aktualisiert und die Warnung erschien.

Hilfreichster Kommentar

Auch hier hilft es vorerst, die Paketversion auf 2.24.0 zu sperren...

Alle 35 Kommentare

gleicher Fehler

gleicher Fehler
nach der Installation von Moment in der Laravel Vue App.
WARNING in ./node_modules/moment/src/lib/locale/locales.js 78:12-82:13 Critical dependency: the request of a dependency is an expression @ ./node_modules/moment/src/lib/locale/locale.js @ ./node_modules/moment/src/moment.js @ ./resources/js/app.js @ multi ./resources/js/app.js ./resources/sass/app.scss

Auch hier hilft es vorerst, die Paketversion auf 2.24.0 zu sperren...

Gleiches Problem hier! Kritisch!

Ich hatte das gleiche Problem! Habe meine auf 2.24.0 gesperrt und meinen Build repariert

Abgeordnet

Hier gilt das gleiche. 2.25.0 gibt dieses Problem an, aber nicht 2.24.0. Änderungen um 2092:16-2096:17 in moment.js ist die Wurzel.

Gleiches Problem, aber seltsamerweise nur, wenn es als dev ausgeführt wird (dies ist ein Nuxt-Projekt) Das Problem scheint in src/lib/locale/locales.js Zeile 78 - 82 zu liegen,

Ändern:
```javascript
aliasedRequire(
(typeof __dirname !== undefiniert ? __dirname : '.') +
'/locale/' +
Name
);
to: Javascript
aliasedRequire('../locale/' + Name);
````
Behebt das Problem bei mir

Ich bekomme es sowohl auf Dev- als auch auf Prod-Builds mit meinem Setup.

Auch hier hilft es vorerst, die Paketversion auf 2.24.0 zu sperren...

Ja, das ist der offensichtliche Workaround, aber nicht wirklich eine Lösung :-).

Ich erhalte auch die gleiche Warnung und die folgenden Konsolenfehler in einem Webbrowser für eckige Anwendungen, während ich moment.format() .

ERROR TypeError: __WEBPACK_IMPORTED_MODULE_2_moment__ is not a function
(main.bundle.js:11539)
Show 102 more frames

Ich auch

Auch bestätigt

Warten Sie eine Sekunde – dies ist eine Warnung, kein Fehler. Erzeugt es immer noch ein Bündel?

Mit Moment 2.25.0:

% ./node_modules/.bin/webpack
Hash: 42b60d02778538c038dc
Version: webpack 4.43.0
Time: 497ms
Built at: 05/01/2020 4:56:43 PM
    Asset      Size  Chunks             Chunk Names
bundle.js  72.2 KiB       0  [emitted]  main
Entrypoint main = bundle.js
[13] ./node_modules/moment/src/lib/units/month.js + 1 modules 9.92 KiB {0} [built]
     |    2 modules
[26] ./node_modules/moment/src/lib/create/valid.js + 1 modules 1.88 KiB {0} [built]
     |    2 modules
[36] ./node_modules/moment/src/lib/create/from-anything.js + 8 modules 25.1 KiB {0} [built]
     |    9 modules
[46] (webpack)/buildin/harmony-module.js 573 bytes {0} [built]
[47] ./node_modules/moment/src/lib/locale sync 160 bytes {0} [optional] [built]
[48] ./src/index.js + 54 modules 84.6 KiB {0} [built]
     | ./src/index.js 62 bytes [built]
     |     + 54 hidden modules
    + 43 hidden modules

WARNING in ./node_modules/moment/src/lib/locale/locales.js 78:12-82:13
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/index.js

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

Und es funktioniert.

Mit [email protected] :

% ./node_modules/.bin/webpack
Hash: c16dbd62d51ed42203b2
Version: webpack 4.43.0
Time: 559ms
Built at: 05/01/2020 4:58:27 PM
    Asset     Size  Chunks                    Chunk Names
bundle.js  263 KiB       0  [emitted]  [big]  main
Entrypoint main [big] = bundle.js
[128] ./src/index.js 62 bytes {0} [built]
[129] (webpack)/buildin/module.js 497 bytes {0} [built]
[130] ./node_modules/moment/locale sync ^\.\/.*$ 3 KiB {0} [optional] [built]
    + 128 hidden modules

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  bundle.js (263 KiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  main (263 KiB)
      bundle.js


WARNING in webpack performance recommendations: 
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/

Und es funktioniert immer noch.

Warten Sie eine Sekunde – dies ist eine Warnung, kein Fehler. Erzeugt es immer noch ein Bündel?

Ja tut es. Trotzdem - nervig, falsch und macht die Build-Ausgabe voller beschissener Spuren.

Ich sehe das auch, aber nur in Produktions-Builds über unser CI.

@jontybrook Ich habe das gleiche Verhalten gesehen, aber nachdem ich den Ordner node_modules zerstört hatte, konnte ich dies lokal reproduzieren.

Der Code mit __dirname der ein Problem für Reactive-Native behebt, musste zurückgesetzt werden, damit Sie (Webpack-Benutzer) eine bessere Konsolenausgabe sehen können.

Behoben in 2.25.1

Dies hat nichts mit einer besseren Konsolenausgabe zu tun ... sondern eher weniger als ideal getesteten Code-Breaking-Builds für VIELE VIELE Leute!

Ich bin froh zu hören, dass es vor wenigen Minuten behoben und veröffentlicht wurde - verbrachte die letzten vielen Stunden damit, auf unserer Seite nach der Ursache zu suchen

Dies hat nichts mit einer besseren Konsolenausgabe zu tun ... sondern eher weniger als ideal getesteten Code-Breaking-Builds für VIELE VIELE Leute!

Exakt ! Eine Warnung heute ist morgen ein potenzieller Fehler.

Es war viel schlimmer als eine Warnung ... wenn Sie zufällig moment-timezone ausgeführt haben, das dynamisch die neueste Version des Moments einzieht, führte dies zu einem vollständigen Codebruch!

Warten Sie eine Sekunde – dies ist eine Warnung, kein Fehler. Erzeugt es immer noch ein Bündel?

Wenn nur die Herstellung eines Bündels das einzige gewünschte Ergebnis wäre...

Der Code mit __dirname der ein Problem für Reactive-Native behebt, musste zurückgesetzt werden, damit Sie (Webpack-Benutzer) eine bessere Konsolenausgabe sehen können.

Behoben in 2.25.1

Warum der Sarkasmus?! Saubere Ausgabe ist wichtig. In mein Setup habe ich Statistiken und Metriken eingefügt, die für mich wichtig sind, und das Überfluten mit unnötigem Zeug macht das Lesen ermüdend und verlangsamt zumindest meine Arbeit. Hinzu kommt die Tatsache, dass eine Abmahnung immer etwas ist, das man auf Dauer nicht ignorieren sollte. Zu guter Letzt, aber eigentlich zuerst - es stellt sich für einige Setups als wirklich schädlich heraus , wie

Schön, dass dies behoben ist. Wird mit 2.24.0 bis zu einer späteren Version fortgeführt oder kann es behalten ... Es hat viel zu lange gedauert, herauszufinden, warum unsere Web-App heute Morgen nach einer Bereitstellung kaputt war.

"Sie" Webpack-Benutzer ... auch bekannt als ein großer Teil der Web-App-Entwickler. Wir haben derzeit keine zusätzlichen Daten aus unserem Webpack-Prozess, daher möchte ich nicht auf eine bessere Konsolenausgabe achten, ich möchte nur, dass es funktioniert.

Der Code mit __dirname der ein Problem für Reactive-Native behebt, musste zurückgesetzt werden, damit Sie (Webpack-Benutzer) eine bessere Konsolenausgabe sehen können.

Behoben in 2.25.1

Sarkasmus beiseite, v2.25.1 behebt nichts (die Warnung Module not found ist immer noch da). Normalerweise verzichte ich darauf, Open-Source-Mitwirkenden zu kritisieren, die ihre Zeit freiwillig zur Verfügung stellen, aber bitte habe keine Haltung gegenüber Benutzern, die einfach Probleme melden. Und ja, Warnungen haben einen Grund. Wenn Sie sie ignorieren, werden alle möglichen anderen Informationen verschleiert und normalerweise führt dies dazu, dass etwas kaputt geht.

Dieses Problem sollte nicht geschlossen werden ... es ist eine bahnbrechende Änderung für Moment-Zeitzonen-Benutzer, die Webpack verwenden, nicht nur ein Problem der Anzeige einer Warnung (und das betrifft eine enorm große Anzahl von Personen).

gleiches Problem
2.25.0 nicht behoben
2.25.1 nicht behoben
2.25.2 nicht behoben

Ich möchte, dass Sie zur Originalversion zurückkehren.

Betriebsprüfungsumgebung
https://github.com/standard-software/partsjs/tree/v5.0.0
Paket.json

Mann, das ist nicht behoben! Können wir Fehler nicht schließen, bis sie behoben sind, insbesondere wenn sie bestehende Builds wie Webpack beschädigen?! @ichernev bitte öffnen Sie dies erneut, da es nicht gelöst ist! Dies wird viele Leute kaputt machen, die sich auf MomentJS verlassen und es mit Vanilla Webpack verwenden.

Hi, BUMP!, das macht auch meinen Build kaputt, nicht behoben!.

Ich aktualisiere einfach Moment mit npm i moment und es hat es gelöst

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

benhathaway picture benhathaway  ·  3Kommentare

M-Zuber picture M-Zuber  ·  3Kommentare

tanepiper picture tanepiper  ·  3Kommentare

ninigix picture ninigix  ·  3Kommentare

ghost picture ghost  ·  3Kommentare