Lors du regroupement de mon application serveur (qui utilise JSDOM en interne) avec le pack Web, je reçois l'avertissement suivant :
WARNING in .../node_modules/jsdom/lib/jsdom/utils.js
203:21-40 Critical dependency: the request of a dependency is an expression
Le code en question est :
["canvas", "canvas-prebuilt"].some(moduleName => {
try {
exports.Canvas = require(moduleName);
Bien qu'il ne soit peut-être pas extrêmement courant de regrouper le code du serveur, je trouve plutôt agréable de passer de 266 Mo ( src/
et node_modules/
) à un seul fichier JS de 6 Mo (dans mon cas).
Envisageriez-vous de réécrire l'importation ci-dessus pour qu'elle soit toujours statique ? Ou voyez-vous cela comme un déficit du bundler qui ne peut pas détecter qu'en pratique les modules possibles pourraient être déduits ?
(S'il était réécrit en if
avec des paramètres littéraux require
, les utilisateurs pourraient encore avoir besoin d'ajouter une exception car ni canvas
ni canvas-prebuilt
sont disponibles par défaut , mais alors au moins le problème aurait été explicitement traité (et l'utilisateur devrait être sûr qu'il ne les utilise pas)).
Non, désolé, webpack n'est pas pris en charge.
@domenic Pourquoi le
Parce qu'il ne peut pas gérer les modèles de code que jsdom utilise.
@domenic quel type de modèles de code ? webpack a une rafale de versions tout le temps ces jours-ci, et il existe une myriade de plugins. Je suis sûr que nous pouvons proposer de bonnes pratiques d'utilisation avec webpack. :RÉ
J'utilise déjà jsdom avec webpack, et au minimum les méthodes document/dom que j'utilise fonctionnent bien, je viens juste d'arriver à ce problème à cause de l'avertissement ci-dessus. Je ne l'ai remarqué que maintenant parce que je pense que mocha-webpack
supprimait l'avertissement, et je l'ai remarqué après l'avoir lancé. Cependant, il se peut que mocha-webpack ne supprime rien et fasse quelque chose d'intelligent pour gérer cela et nous pourrions utiliser cette meilleure pratique.
mettre à jour! :mains_levées:
le correctif est super simple, et je l'ai obtenu à partir d'un problème mocha-webpack
: https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. Il y a aussi ce document https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md qui recommande d'utiliser ce plugin.
const nodeExternals = require('webpack-node-externals');
module.exports = {
externals: [nodeExternals()],
// etc configs here
}
Commentaire le plus utile
mettre à jour! :mains_levées:
le correctif est super simple, et je l'ai obtenu à partir d'un problème
mocha-webpack
: https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. Il y a aussi ce document https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md qui recommande d'utiliser ce plugin.