我想使用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:

特别是有人可以解释这一段,具体如何 src/main.js src/main.js 是这个问题的一个例子:

但是有一个问题 . Webpack将从node_modules文件夹加载模块并将它们捆绑在一起 . 这适用于前端代码,但后端模块通常没有为此做好准备(即以奇怪的方式使用require),或者更糟的是二进制依赖项 . 我们根本不想捆绑任何来自node_modules的东西 .

我想更好地理解WebPack中的这一步,所以我不只是盲目地复制配置文件并自满而言它是有效的 .

谢谢