Почему я не могу разрешить модули по умолчанию для nodejs при использовании узла preset-env? - PullRequest
5 голосов
/ 24 мая 2019

Я пишу плагин для приложения, которое запускает Chromium Embedded Framework (CEF) с более старой версией Node.

Я бросил в приложение webpack & babel. Когда я запускаю веб-пакет, происходит сбой в файле, который имеет 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
        }
      }
    ]
  ]
}

Мой конфиг веб-пакета по сути:

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']
  }
};

1 Ответ

2 голосов
/ 28 мая 2019

Для конфигурации веб-пакета также необходимо target: 'node'.Делать это только в .babelrc было недостаточно.

...