You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Electron打包Win32 x64生成的.exe无法启动创建窗口求助

解决Electron打包Win32 x64后无法启动窗口的问题

你的问题大概率是打包源目录指定错误导致的,这是使用electron-packager时新手很容易踩的坑,我们来一步步拆解和修复:

构建脚本的核心问题

你的打包命令是:

mkdir build && electron-packager build ISS-Live-Locator --platform=win32 --arch=x64

这里的第一个参数build是electron-packager要打包的源文件目录,但你只创建了一个空的build文件夹,并没有把项目的核心文件(main.js、index.html、preload.js这些启动必需的文件)复制进去。electron-packager打包了一个空目录,自然找不到启动程序的入口,所以无法创建窗口。

而你用npm startelectron .能正常运行,是因为这两个命令默认从当前项目根目录加载main.js,根目录里所有文件都是齐全的。

修复方案

方案1:直接打包项目根目录(推荐)

不需要手动创建空的build文件夹,直接把当前项目根目录作为打包源,指定输出目录为build即可。修改package.json里的build脚本:

"scripts": {
  "build": "electron-packager . ISS-Live-Locator --platform=win32 --arch=x64 --out=build"
}

参数说明:

  • . 代表以当前项目根目录作为打包源目录
  • --out=build 指定打包后的所有产物输出到build文件夹,避免和项目源文件混淆

方案2:先复制文件到build目录再打包

如果你坚持要先创建build目录,需要先把所有必要文件复制进去再执行打包:

# Windows环境下
mkdir build && xcopy main.js build\ /y && xcopy index.html build\ /y && xcopy preload.js build\ /y && xcopy package.json build\ /y && electron-packager build ISS-Live-Locator --platform=win32 --arch=x64

# Linux/macOS环境下
mkdir -p build && cp -r main.js index.html preload.js package.json build/ && electron-packager build ISS-Live-Locator --platform=win32 --arch=x64

额外排查点

如果修复源目录后仍有问题,可以检查这些细节:

  • 确认package.json里的main字段正确指向main.js
    "main": "main.js"
    
  • 临时开启调试工具排查:在createWindow函数里取消注释mainWindow.webContents.openDevTools(),重新打包后运行程序,查看控制台是否有报错信息,能帮你快速定位剩余问题。

内容的提问来源于stack exchange,提问作者user13924257

火山引擎 最新活动