Jsdom: "la demande d'une dépendance est une expression" (lors du regroupement avec Webpack)

Créé le 24 nov. 2017  ·  5Commentaires  ·  Source: jsdom/jsdom

Informations de base:

  • Version de Node.js : 8.9.1
  • version jsdom

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)).

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.

const nodeExternals = require('webpack-node-externals');

module.exports = {
  externals: [nodeExternals()],
  // etc configs here
}

Tous les 5 commentaires

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
}
Cette page vous a été utile?
0 / 5 - 0 notes