为什么在使用预置环境节点时无法解析nodejs默认模块?

Dav*_*ein 5 node.js webpack babeljs

我正在为运行带有旧版Node的Chromium嵌入式框架(CEF)的应用程序编写插件。

我把webpack和babel放到了应用程序中。当我运行webpack时,它在具有const fs = require('fs');或任何其他默认节点程序包的文件上失败。我的代码和依赖项都在发生这种情况:

Module not found: Error: Can't resolve 'fs' in '/Users/me/repositories/myrepo/node_modules/chokidar'

.babelrc的如下:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": true
        }
      }
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的webpack配置实质上是:

module.exports = {
  entry: './src/main.jsx',
  mode: process.env.NODE_ENV,
  devtool: isDev ? 'eval-source-map' : false,
  output: {
    path: PLUGINDIR,
    filename: 'main.js',
    libraryTarget: 'umd'
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          plugins: ['transform-react-jsx']
        }
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader']
      }
    ]
  },

  resolve: {
    extensions: ['.js', '.jsx', '.css']
  }
};
Run Code Online (Sandbox Code Playgroud)

Dav*_*ein 2

webpack 配置还需要target: 'node'. 仅仅这样做.babelrc是不够的。