将我的服务器应用程序(内部使用 JSDOM)与 web pack 捆绑在一起时,我收到以下警告:
WARNING in .../node_modules/jsdom/lib/jsdom/utils.js
203:21-40 Critical dependency: the request of a dependency is an expression
有问题的代码是:
["canvas", "canvas-prebuilt"].some(moduleName => {
try {
exports.Canvas = require(moduleName);
虽然捆绑服务器代码可能不是很常见,但我发现从 266MB( src/
和node_modules/
)到单个 6MB JS 文件(在我的情况下)非常好。
您会考虑将上述导入重写为始终是静态的吗? 或者您是否认为这是捆绑器中的缺陷,它无法检测到实际上可以推断出可能的模块?
(如果它被改写到if
用文字require
参数,用户仍然可能需要添加一个例外既不canvas
也不canvas-prebuilt
默认可用,但至少问题会被明确处理(并且用户必须确保他们没有使用这些))。
不,抱歉,不支持 webpack。
@domenic为什么不支持 webpack? 它是迄今为止最受欢迎的捆绑器。
因为它无法处理 jsdom 使用的代码模式。
@domenic什么样的代码模式? 现在 webpack 一直有大量的发布,并且有无数的插件。 我相信我们可以提出一些与 webpack 一起使用的好做法。 :D
我已经在 webpack 中使用了 jsdom,并且我使用的文档/dom 方法至少可以正常工作,我只是因为上面的警告才遇到这个问题。 我现在才注意到它,因为我认为mocha-webpack
正在抑制警告,我在扔掉它后注意到了。 然而,可能是 mocha-webpack 没有抑制任何东西,并且正在做一些聪明的事情来处理这个问题,我们可以使用那个最佳实践。
更新! :raised_hands:
修复非常简单,我从mocha-webpack
问题中得到了它: https : https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md推荐使用这个插件。
const nodeExternals = require('webpack-node-externals');
module.exports = {
externals: [nodeExternals()],
// etc configs here
}
最有用的评论
更新! :raised_hands:
修复非常简单,我从
mocha-webpack
问题中得到了它: https : https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md推荐使用这个插件。