Beim Importieren request
in ein Barebone-Webpack-Projekt werden drei Warnmeldungen angezeigt. Ein minimales Beispiel zur Reproduktion des Fehlers ist auf GitHub (run npm install
and npm start
) verfügbar .
Critical dependency: the request of a dependency is an expression
Wie kann ich diese Warnung loswerden?
Mehr Informationen:
Webpack versucht, require
Anrufe statisch aufzulösen , um ein minimales Bundle zu erstellen . Wenn eine Bibliothek Variablen oder Ausdrücke in einem erforderlichen Aufruf verwendet (z. B. require('' + 'nodent')
in diesen Zeilen von ajv
), kann Webpack diese nicht statisch auflösen und importiert das gesamte Paket.
Mein Grundgedanke ist, dass dieser dynamische Import in der Produktion nicht wünschenswert ist und Code am besten warnungsfrei gehalten wird. Das heißt, ich möchte eine Lösung, die das Problem löst. Z.B:
- Konfigurieren Sie das Webpack manuell, um die erforderlichen Bibliotheken zu importieren und das Auftreten von Warnungen zu verhindern.
- Hinzufügen einer
hack.js
Datei zu meinem Projekt, die die erforderlichen Aufrufe auf irgendeine Weise überschreibt. - Aktualisieren meiner Bibliotheken.
ajv-5.0.1-beta.3
hat einen Fix, der die Warnungen zum Schweigen bringt. Allerdings, wenn ich es verwenden möchte, muss ich warten , bis es freigegeben wird, und dann bishar-validator
undrequest
nachfolgende Aktualisierungen veröffentlichen. Wenn es eine Möglichkeit gibt,har-validator
die Verwendung der Beta-Version von zu erzwingenajv
, würde dies mein Problem lösen. - Andere
new webpack.IgnorePlugin(/async/, /ajv/)
sind zwei von drei Warnungen weg, aber das WebpackCannot find module "../async"
. Irgendeine Idee über den richtigen magischen Wert, damit es funktioniert?Antworten:
Gelöst mit
npm install [email protected] --save
Laut den Autoren von
ajv
wird das Problem wahrscheinlich in der neuesten Version vonrequest
in einigen Wochen behoben sein.quelle
npm remove request
und neu installieren, dannpackage.json
entfernen Sie die^
vor der Versionsnummer. Wenn Sie das verlassen^
, wird das Paket möglicherweise nach einem aktualisiertnpm update
und die Warnung wird erneut angezeigt .Ersetzen Sie dies
mit diesem-
quelle
System.Import
Funktion mitteilen , wo sich der Quellcode imnode_modules
Ordner befindet. Der Pfad ändert sich abhängig von der von Ihnen verwendeten Angular-Version. Es sollte vom Angular-Team besser gehandhabt werden, hoffentlich schon.Diese Warnung kann mit Paketinjektionen in verknüpft werden (Abhängigkeiten oder devDependencies).
Wenn das Problem plötzlich auftritt, überprüfen Sie die letzte Änderung in Ihrer package.json.
Ziehen Sie in Betracht, package-lock.json zu entfernen, wenn Sie einen Neustart planen
npm install
.quelle