Electron使用electron-builder打包后exe运行找不到electron-is-dev模块
解决方案
按以下步骤修改即可解决打包后运行报错的问题:
- 修复
public/electron.js语法错误
激活事件回调中的函数名存在输入冗余内容,修改为如下代码:app.on("activate", () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) - 完善Electron窗口配置
Electron 12+ 版本默认开启上下文隔离,开启nodeIntegration的同时需要关闭上下文隔离,避免渲染进程权限异常,同时替换本地文件加载方式避免路径编码问题:function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false }, }) if (isDev) { win.loadURL("http://localhost:3000") win.webContents.openDevTools({ mode: "detach" }) } else { // 替换为loadFile方法加载本地静态文件 win.loadFile(path.resolve(__dirname, '../build/index.html')) } } - 修改
package.json打包配置- 调整打包命令,先执行React生产构建,再执行Electron打包,避免缺失前端构建产物:
"scripts": { // 其余脚本保持不变 "dist": "npm run build && electron-builder" }- 在build配置中添加files字段,指定需要打包进应用的资源范围:
"build": { "appId": "Jokes Collection", "extends": null, "files": [ "build/**/*", "public/electron.js", "node_modules/**/*" ], "win": { "target": "nsis", "icon": "build/icon.png" } } - 测试验证
删除本地已有的build、dist文件夹,重新执行npm run dist,打包完成后运行dist目录下的exe文件即可正常启动。
内容的提问来源于stack exchange,提问作者Jamshaid Tariq
相关产品推荐
相关产品推荐

