Javascript 使用electron builder和webpack在main.js中使用节点模块

Javascript 使用electron builder和webpack在main.js中使用节点模块,javascript,node.js,webpack,electron,electron-builder,Javascript,Node.js,Webpack,Electron,Electron Builder,首先,我不知道我遇到的问题是否是因为网页包或电子建设者或两者的结合 解决这个问题。 当我为开发构建时,我能够使用在我的package.json文件{“main”:“app/main.js”}中指定的main.js文件中安装的节点模块 但是,当我使用electron builder创建安装程序时。使用安装程序安装应用程序后,启动应用程序时会收到以下错误消息: 我猜我之所以收到这条消息是因为main.js找不到所需的节点模块。那么,我该如何使它们可用呢 我希望有人比我更聪明,我们只是更擅长谷歌搜索:

首先,我不知道我遇到的问题是否是因为网页包或电子建设者或两者的结合

解决这个问题。 当我为开发构建时,我能够使用在我的package.json文件
{“main”:“app/main.js”}
中指定的main.js文件中安装的节点模块

但是,当我使用electron builder创建安装程序时。使用安装程序安装应用程序后,启动应用程序时会收到以下错误消息: 我猜我之所以收到这条消息是因为main.js找不到所需的节点模块。那么,我该如何使它们可用呢

我希望有人比我更聪明,我们只是更擅长谷歌搜索:)

Package.js:

{
“main”:“app/main.js”,
“脚本”:{
“热服务器”:“node hot server.js”,
“构建捆绑包”:“rimraf应用程序/dist.release&&better npm运行构建捆绑包”,
“开始”:“更好的npm运行开始”,
“启动热”:“更好的npm运行启动热”,
“backend”:“node backend dummy.js”,
“dist-win”:“npm运行构建包和rimraf dist&build--win--ia32”,
“dist mac”:“npm运行构建包和rimraf dist和构建--mac”
},
“BetterScript”:{
“开始”:{
“命令”:“电子/”,
“环境”:{
“节点环境”:“生产”
}
},
“热启动”:{
“命令”:“电子/”,
“环境”:{
"热":一,,
“节点环境”:“开发”
}
},
“生成包”:{
“命令”:“webpack--config webpack.config.production.js--progress--profile--colors”,
“环境”:{
“节点环境”:“生产”
}
}
},
“bin”:{
“electron”:“/node_modules/.bin/electron”
},
“构建”:{
“appId”:“app”,
“文件”:[
“dist.release/*”,
“dist.resources/*”,
“main.js”,
“第三方/*”,
“app.html”
],
“外部文件”:[
“lang/*”,
{
“从”:“构建/额外”,
“至”:“/”,
“过滤器”:“***”
}
],
“asar”:正确

}
所以我找到了解决问题的方法。我所做的是看这个项目:

他们有一个特殊的webpack.config.electron.js文件,该文件将main.development.js文件的所有node_模块捆绑到一个main.js文件中,该文件包含我们需要的所有内容。然后,当electron程序启动时,它将使用这个main.js捆绑包来运行。要实现这一点,您需要在package.json文件中添加一个构建脚本,以执行s webpack.config.electron.js


我认为通过查看链接的项目比我解释更容易理解如何解决它。

您使用的是Electron packager吗?另外,您的软件包的devDependencies部分是否有Electron日志。json?不,我不使用Electron packager。我在依赖项中有Electron日志和Electron updater。在进一步挖掘之后nd我认为这与我所有的节点模块都使用browserify打包并隐藏在捆绑包中有关。因此我想我有两个选择,要么在捆绑包外添加所需的节点模块,要么在捆绑包内访问它们。我非常确定,当您使用electron bu时,开发依赖性不会包含在构建中ilder,但我目前无法确认。因此,如果它是一个开发依赖项,它将被删除。Webpack与bundle无关,因为通常在Webpack配置中排除节点模块。