4

我有一个 Node js 服务器应用程序,它使用ExpressPug. 我想将它捆绑到可以由pm2. 这似乎有几个问题。

  1. 在运行时,我Cannot find module "."在编译期间得到一些消息,例如

./node_modules/express/lib/view.js 中的警告 80:29-41 关键依赖项:依赖项的请求是一个表达式

出现来自动态导入的require(mod).__express. 我假设 Webpack 无法静态解决这些问题,并且不知道要包含哪个依赖项。

如何解决?

  1. 如何Pug编译并成为输出 js 的一部分?
4

1 回答 1

1

这是因为 webpack 重新node_modules捆绑(已经捆绑)依赖项,并且在 pug 的情况下它不起作用。

您需要在 webpack选项中使用webpack-node-externalsexternals以明确要求不要重新捆绑依赖项。

  1. 安装 webpack-node-externals:npm i -D webpack-node-externals
  2. 将它集成到您​​的 webpack 配置文件中:

例子

// ...

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

module.exports = {
  target: 'node',

  entry: {
    // ...
  },

  module: {
    // ...
  },

  externals: [nodeExternals()],

  output: {
    // ...
  },
}
于 2018-02-16T16:25:21.757 回答