webpack找不到模块“fs”

时间:2017-04-11 12:33:43

标签: javascript webpack electron fs

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

node: {
fs: 'empty'
   }, 

我仍然得到相同的fs not found错误。我也尝试将目标设置为电子,但是当我这样做时,我得到一串错误而我的模块都没有加载,是否有针对此问题的解决方法?我不确定这是与网络包有关的问题还是电子问题。

这是我的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"
  }
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

在与网络工作者一起工作NWjs时,我遇到了类似的问题。首先,确保将正确的target选项设置为“node-webkit”,“webworker”,“node”等。然后,像这样注释模块:

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

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

相关问题