2017-04-11 196 views
0

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

node: { 
fs: 'empty' 
    }, 

我仍然得到相同的FS找不到错误。我也尝试将目标设置为电子,但是当我这样做时,我得到一串错误并且没有加载模块,是否有解决此问题的解决方法?我不确定这是否是与webpack相关的问题或电子问题。

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

得设定一个目标,队友,否则会推断浏览器环境 – corvid

回答

3

在你的WebPack配置设置target: 'electron-main'

1

我在使用webworkers处理NWjs时遇到了类似问题。首先,确保你然后设置正确的target选项“节点的webkit”,“webworker”,“节点”,等等,注释模块是这样的:

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

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