Webpack - Critique de la dépendance: la demande d'une dépendance est une expression
Je reçois trois messages d'avertissement lors de l'importation de request
dans un barebone webpack projet. Un exemple minimal de reproduire le bug est disponible sur GitHub (exécuter npm install
et npm start
).
Critical dependency: the request of a dependency is an expression
Comment puis-je me débarrasser de cet avertissement?
Plus d'informations:
Webpack essaie de résoudre require
appels de façon statique à faire un minimum de bundle. Lorsqu'une bibliothèque utilise des variables ou des expressions dans un besoin d'appeler (comme require('' + 'nodent')
dans ces lignes de ajv
), Webpack ne peut pas les résoudre de manière statique et les importations de l'ensemble.
Mon raisonnement est que cette dynamique d'importation n'est pas souhaitable dans la production, et le code est mieux gardé de l'avertissement-gratuit. Cela signifie que je veux une solution qui résout le problème. E. g.:
- Configurer manuellement webpack pour importer les bibliothèques requises et de prévenir les mises en garde de se produire.
- L'ajout d'un
hack.js
fichier de mon projet qui l'emporte sur le besoin des appels d'une certaine façon. - La mise à niveau de mes bibliothèques.
ajv-5.0.1-beta.3
a un correctif que les silences les avertissements. Cependant, si je veux l'utiliser, je dois attendre jusqu'à ce qu'il est libéré, puis jusqu'àhar-validator
etrequest
libérer les mises à jour ultérieures. Si il y a un moyen de forcerhar-validator
l'utilisation de la version bêta deajv
, qui permettrait de résoudre mon problème. - Autres
- 1. github.com/epoberezkin/ajv/issues/117#issuecomment-198328830 2. Je ne pense pas que ça marchera 3. vous aurez à attendre un peu.
- que github commentaire semble être ce que je suis en train de regarder pour, mais il ne fait pas taire les avertissements. Si je l'ai changer pour
new webpack.IgnorePlugin(/async/, /ajv/)
, deux des trois avertissements ont disparu mais webpackCannot find module "../async"
. Aucune idée sur la valeur magique pour le faire fonctionner? - Le lien vers le github exemple de code est cassé. Pls mettre le code directement dans la question.
Vous devez vous connecter pour publier un commentaire.
Résolu avec
npm install [email protected] --save
Selon les auteurs de
ajv
, le problème sera probablement résolu dans la dernière version derequest
dans quelques semaines.npm remove request
et réinstaller, puis danspackage.json
supprimer la^
avant le numéro de version. Si vous laissez le^
, le package peut être mis à jour après unenpm update
et l'avertissement réapparaît.Remplacer ce
avec ce-
System.Import
fonction où trouver le code source dans lenode_modules
dossier. Le chemin change selon l'angle de la version que vous utilisez. Il devrait être mieux gérées par l'Angulaire de l'équipe, nous espérons que cela a déjà été.