Je reçois trois messages d’avertissement lors de l’importation de request
dans un projet barebone webpack. Un exemple minimal pour reproduire le bogue est disponible sur GitHub (exécutez 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'information:
Webpack essaie de résoudre require
appels statiquement pour créer un paquet minimal. Lorsqu'une bibliothèque utilise des variables ou des expressions dans un appel obligatoire (tel que require('' + 'nodent')
dans ces lignes sur ajv
), Webpack ne peut pas les résoudre de manière statique et importe l'ensemble du package. .
Mon raisonnement est que cette importation dynamique n'est pas souhaitable en production et qu'il vaut mieux garder le code sans avertissement. Cela signifie que je veux toute solution qui résout le problème. Par exemple.:
hack.js
À mon projet qui remplace les appels requis d'une certaine manière.ajv-5.0.1-beta.3
A un correctif qui met les avertissements en sourdine. Cependant, si je veux l’utiliser, je dois attendre qu’elle soit publiée, puis jusqu’à ce que har-validator
Et request
publient les mises à jour ultérieures. S'il existe un moyen de forcer har-validator
À utiliser la version bêta de ajv
, cela résoudrait mon problème.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 de request
dans quelques semaines.
Remplacez ceci
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), // location of your src
{} // a map of your routes
),
avec ça-
new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )