我有一个电子应用程序,我正在用Webpack 2构建 . 我有一个自定义模块( mymodule
),我想成为另一个捆绑引用的独立包 . 问题是当我使用 CommonsChunkPlugin
与我的主进程时,电子会在应用程序启动时锁定 . 我可以看到电子徽标出现在文档中,但窗口永远不会显示出来 .
请注意,它不必是我写的模块,我可以使用 lodash
与 CommonsChunkPlugin
并获得相同的结果 .
有趣的是,如果我以相同的方式使用 CommonsChunksPlugin
与渲染器进程,一切正常 .
我整理了一个显示此问题的simple electron app .
github repo提供了有关情况的更多细节,但以下是重要部分:
电子主要过程:
const mymod = require('./mymodule')
app.on('ready', function() {
console.log(mymod.abc);
mainWindow = new BrowserWindow({width: 800, height: 600});
mainWindow.loadURL(url.format({
pathname: require('./index.html')
}));
});
webpack config for main:
entry: {
main: path.join(__dirname, './main.js'),
mymod: ['./mymodule']
},
output: {
path: __dirname + '/build/',
publicPath: __dirname + '/build/',
filename: '[name].bundle.js'
},
plugins: [
new webpack.optimize.CommonsChunkPlugin('mymod')
]
在这种状态下,该应用程序将无法正常工作 . 如果你进入 webpack.main.js
文件并注释掉这些行中 CommonsChunkPlugin
的使用它将开始工作:
entry: {
main: path.join(__dirname, './main.js'),
// mymod: ['./mymodule']
},
output: {
path: __dirname + '/build/',
publicPath: __dirname + '/build/',
filename: '[name].bundle.js'
},
plugins: [
// new webpack.optimize.CommonsChunkPlugin('mymod')
]
这是我的环境信息:
MacOS: 10.12.6
node: v6.11.0
npm: 3.10.10
electron: v1.6.12
wepback2: 3.5.5
那么这里发生了什么?这是电子,网络包或我的代码的错误吗?