webpack 找不到模块 "fs"

webpack cannot find module "fs"

我有一个使用 webpack 和 electron 的项目。我更新了我的应用程序以使用最新版本的 electron,因为它使用的是 electron-prebuilt。由于更新到最新版本,由于此错误,我现在无法编译我的应用程序。我尝试了其他 SO 帖子的一些建议,建议编辑 webpack.config 并添加

node: {
fs: 'empty'
   }, 

我仍然遇到相同的 fs not found 错误。我还尝试将目标设置为电子,但是当我这样做时,我收到一串错误并且我的模块加载 none,是否有解决此问题的方法?我不确定这是 webpack 相关问题还是 electron 问题。

这是我的 webpack.config

var webpack = require('webpack');

//Loaders & Webpack config
module.exports = {
  entry: {
    app: ['webpack/hot/dev-server', './app/app.js'],

  },

  output: {
    path: './app/dist',
    filename: 'bundle.js',
    publicPath: 'http://localhost:8080/dist/'
  },

  devServer: {
    contentBase: './app',
    publicPath: 'http://localhost:8080/dist/'
  },

  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        query: {
          presets: ['react', 'es2015']
        }
      },
      { test: /\.css$/, 
        loader: 'style-loader!css-loader' 
      },
      { 
        test: /\.png$/, 
        loader: "file-loader" 
      },
      { 
        test: /\.jpg$/, 
        loader: "file-loader" 
      }
    ]
  },

node: {
fs: 'empty'
   },


  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.IgnorePlugin(new RegExp("^(fs|ipc)$"))
  ],


}

package.json

{
  "name": "factory",
  "productName": "Factory",
  "description": "",
  "author": ,
  "version": "0.1.0",
  "main": "main.js",
  "devDependencies": {
    "babel-core": "^6.8.0",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "bootstrap": "^4.0.0-alpha.4",
    "bootstrap-css": "^4.0.0-alpha.5",
    "bootstrap-sass": "^3.3.7",
    "css-loader": "^0.23.1",
    "electron-packager": "^5.2.1",
    "electron-rebuild": "^1.1.3",
    "exports-loader": "^0.6.4",
    "file-loader": "^0.8.5",
    "imports-loader": "^0.7.1",
    "node-libs-browser": "^1.0.0",
    "node-sass": "^4.5.2",
    "resolve-url-loader": "^2.0.2",
    "sass-loader": "^6.0.3",
    "style-loader": "^0.13.2",
    "url-loader": "^0.5.8",
    "webpack": "^1.14.0",
    "webpack-dev-server": "^1.14.1"
  },
  "scripts": {
    "start": "./node_modules/.bin/electron .",
    "watch": "./node_modules/.bin/webpack-dev-server",
    "build": "electron-packager ./ --platform=darwin,win32 --arch=x64 --prune --overwrite"
  },
  "dependencies": {
    "dragula": "^3.7.2",
    "electron-prebuilt": "^0.37.2",
    "electron-tabs": "^0.6.0",
    "react": "^15.3.2",
    "react-dom": "^15.3.2",
    "react-onclickout": "^2.0.4",
    "react-router": "^2.4.0",
    "redux": "^3.6.0"
  }
}

在您的 Webpack 配置中设置 target: 'electron-main'

我在使用 webworker 处理 NWjs 时遇到了类似的问题。首先,确保将正确的 target 选项设置为 "node-webkit"、"webworker"、"node" 等。然后,像这样注释模块:

externals:{
   "fs": "commonjs fs"
}

这将告诉 webpack 将其作为模块加载,而不是假设依赖项已经存在于环境中。