2017-04-11 194 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將其加載爲一個模塊,而不是假設依賴已經在環境中。