Al empaquetar mi aplicación de servidor (que internamente usa JSDOM) con el paquete web, recibo la siguiente advertencia:
WARNING in .../node_modules/jsdom/lib/jsdom/utils.js
203:21-40 Critical dependency: the request of a dependency is an expression
El código en cuestión es:
["canvas", "canvas-prebuilt"].some(moduleName => {
try {
exports.Canvas = require(moduleName);
Si bien puede que no sea extremadamente común agrupar el código del servidor, me parece bastante agradable pasar de 266 MB ( src/
y node_modules/
) a un solo archivo JS de 6 MB (en mi caso).
¿Consideraría reescribir la importación anterior para que sea siempre estática? ¿O ve esto como un déficit en el paquete que no puede detectar que en la práctica se podrían inferir los posibles módulos?
(Si se reescribiera en un if
con parámetros require
literales, es posible que los usuarios aún necesiten agregar una excepción ya que ni canvas
ni canvas-prebuilt
están disponibles de forma predeterminada , pero entonces al menos el problema se habría manejado explícitamente (y el usuario tendría que estar seguro de que no los está usando)).
No, lo siento, el paquete web no es compatible.
@domenic ¿
Porque no puede manejar los patrones de código que usa jsdom.
@domenic ¿qué tipo de patrones de código? webpack tiene una serie de lanzamientos todo el tiempo estos días, y hay una gran cantidad de complementos. Estoy seguro de que podemos encontrar algunas buenas prácticas para usar con webpack. :D
Ya uso jsdom con webpack, y mínimamente los métodos document / dom que estoy usando funcionan bien, acabo de llegar a este problema debido a la advertencia anterior. Solo lo noté ahora porque creo que mocha-webpack
estaba suprimiendo la advertencia, y lo noté después de tirarlo. sin embargo, podría ser que mocha-webpack no esté suprimiendo nada y esté haciendo algo inteligente para manejar esto y podríamos usar esa mejor práctica.
¡actualizar! : manos_alzadas:
la solución es súper simple, y la obtuve de un problema de mocha-webpack
: https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. También existe este documento https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md que recomienda el uso de este complemento.
const nodeExternals = require('webpack-node-externals');
module.exports = {
externals: [nodeExternals()],
// etc configs here
}
Comentario más útil
¡actualizar! : manos_alzadas:
la solución es súper simple, y la obtuve de un problema de
mocha-webpack
: https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. También existe este documento https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md que recomienda el uso de este complemento.