我想使用WebPack捆绑后端代码。根据其他stackoverflow答案的建议,我使用了here所描述的配置文件:
var webpack = require('webpack');
var path = require('path');
var fs = require('fs');
var nodeModules = {};
fs.readdirSync('node_modules')
.filter(function(x) {
return ['.bin'].indexOf(x) === -1;
})
.forEach(function(mod) {
nodeModules[mod] = 'commonjs ' + mod;
});
module.exports = {
entry: './src/main.js',
target: 'node',
output: {
path: path.join(__dirname, 'build'),
filename: 'backend.js'
},
externals: nodeModules
}
但即使在阅读了解释为什么我们必须将node_module
中的所有模块列为外部的文章后,我仍然感到困惑,为什么我们必须采取这一步骤,为什么没有它,我们会收到此错误:
WARNING in ./~/express/lib/view.js
Critical dependencies:
特别是有人可以解释这一段以及require('express')
中src/main.js
具体如何解决这个问题:
但是有一个问题。 Webpack将从中加载模块 node_modules文件夹并将它们捆绑在一起。这适用于前端 代码,但后端模块通常不为此做好准备(即 以奇怪的方式使用require)或更糟的是二进制依赖。我们 根本不想从node_modules捆绑任何东西。
我想更好地理解WebPack中的这一步,所以我不只是盲目地复制配置文件并自满而言它有效。
由于