electron-builder打包失败,提示Application ... app.asar does not exist

本文介绍了在使用electron-builder进行Windows打包时遇到的错误,主文件‘main.js’不存在,并提供了解决方法,如检查app目录结构和electron-egg框架的注意事项。

错误代码:
• electron-builder version=22.10.4
• writing effective config file=distbuilder-effective-config.yaml
• no native production dependencies
• packaging platform=win32 arch=x64 electron=12.2.3 appOutDir=distwin-unpacked
Error: Application entry file “dist\electron\main.js” in the “D:\electronWork\electron-egg\build\win-unpacked\resources\app.asar” does not exist

异常表现:
electron-builder打包失败

解决办法:
electron项目根目录中,如果有app文件目录,则该目录必须是个普通文件目录,
比如,app/目录内,不能有 .git、 package.json、node_modules等文件。

如果你使用的是 electron-egg 框架icon-default.png?t=M4ADhttps://github.com/wallace5303/electron-egg
那么前端项目默认的文件夹名称为:frontend,请不要改动这个文件名称。

pnpm run package > hotpot-financial-system@1.0.0 package E:\安装包\243243323906 > electron-builderelectron-builder version=24.13.3 os=10.0.26100 • loaded configuration file=package.json ("build" field) • writing effective config file=dist\electron\builder-effective-config.yaml • skipped dependencies rebuild reason=npmRebuild is set to false • packaging platform=win32 arch=ia32 electron=30.0.0 appOutDir=dist\electron\win-ia32-unpacked ⨯ Application entry file "dist\electron\main.js" in the "E:\安装包\243243323906\dist\electron\win-ia32-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration. failedTask=build stackTrace=Error: Application entry file "dist\electron\main.js" in the "E:\安装包\243243323906\dist\electron\win-ia32-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration. at error (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:7:12) at checkFileInArchive (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:31:11) at WinPackager.checkFileInPackage (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:514:7) at WinPackager.sanityCheckPackage (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:562:5) at WinPackager.doPack (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:319:5) at WinPackager.pack (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:140:5) at Packager.doBuild (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\packager.ts:445:9) at executeFinally (E:\安装包\243243323906\node_modules\.pnpm\builder-util@24.13.1\node_modules\builder-util\src\promise.ts:12:14) at Packager._build (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\packager.ts:379:31) at Packager.build (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\packager.ts:340:12) at executeFinally (E:\安装包\243243323906\node_modules\.pnpm\builder-util@24.13.1\node_modules\builder-util\src\promise.ts:12:14)  ELIFECYCLE  Command failed with exit code 1.
08-10
pnpm run package > hotpot-financial-system@1.0.0 package E:\安装包\243243323906 > electron-builderelectron-builder version=24.13.3 os=10.0.26100 • loaded configuration file=package.json ("build" field) • writing effective config file=dist\electron\builder-effective-config.yaml • skipped dependencies rebuild reason=npmRebuild is set to false • packaging platform=win32 arch=ia32 electron=30.0.0 appOutDir=dist\electron\win-ia32-unpacked ⨯ Application entry file "electron\main.js" in the "E:\安装包\243243323906\dist\electron\win-ia32-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration. failedTask=build stackTrace=Error: Application entry file "electron\main.js" in the "E:\安装包\243243323906\dist\electron\win-ia32-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration. at error (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:7:12) at checkFileInArchive (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\asar\asarFileChecker.ts:31:11) at WinPackager.checkFileInPackage (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:514:7) at WinPackager.sanityCheckPackage (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:562:5) at WinPackager.doPack (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:319:5) at WinPackager.pack (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\platformPackager.ts:140:5) at Packager.doBuild (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\packager.ts:445:9) at executeFinally (E:\安装包\243243323906\node_modules\.pnpm\builder-util@24.13.1\node_modules\builder-util\src\promise.ts:12:14) at Packager._build (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\packager.ts:379:31) at Packager.build (E:\安装包\243243323906\node_modules\.pnpm\app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3\node_modules\app-builder-lib\src\packager.ts:340:12) at executeFinally (E:\安装包\243243323906\node_modules\.pnpm\builder-util@24.13.1\node_modules\builder-util\src\promise.ts:12:14)  ELIFECYCLE  Command failed with exit code 1.
08-10
在使用 `electron-vite` 进行打包时,生成的 `app.asar` 文件中缺少 `dist` 目录的问题通常与构建配置有关。`app.asar` 是 Electron 应用程序的核心资源包,包含了应用的主要代码和静态资源。当构建过程中某些文件或目录未被正确包含进 ASAR 包时,就会导致此类问题。 ### 原因分析 1. **默认打包行为**:`electron-builder` 默认不会将整个 `dist` 目录直接打包进 `app.asar`,而是将其视为静态资源目录。如果未明确指定需要包含的内容,则 `dist` 可能会被遗漏[^2]。 2. **文件路径配置错误**:如果项目结构复杂或主进程入口不在根目录下,可能导致 `main.js` 或其他关键文件的相对路径配置不准确,从而影响打包内容的完整性[^4]。 3. **未禁用 ASAR 打包**:虽然 `app.asar` 是标准格式,但在某些情况下(如调试、访问文件系统路径),启用 ASAR 会引发问题。若未正确处理,可能影响资源文件的加载。 --- ### 解决方案 #### 1. 显式指定需要打包的文件和目录 在 `electron.config.json` 中,通过 `files` 字段显式声明需要包含进 ASAR 的文件和目录。例如: ```json { "files": ["main.js", "preload.js", "./dist"] } ``` 此配置确保 `dist` 目录中的内容被正确包含进最终的 `app.asar` 文件中[^4]。 #### 2. 调整构建输出路径 确保 `vite` 构建后的 `dist` 目录位于 `electron` 主进程可以访问的位置。通常建议在 `package.json` 中配置如下脚本: ```json "scripts": { "dev": "vite --host", "build": "vite build", "preview": "vite preview", "start": "electron ." } ``` 执行 `npm run build` 后,确认 `dist` 目录位于项目根目录下,以便于打包工具识别[^3]。 #### 3. 禁用 ASAR 打包(可选) 如果希望更灵活地访问文件系统路径,可以在配置中禁用 ASAR: ```json { "asar": false } ``` 这将使 `dist` 目录以原始形式保留在 `Resources/app` 下,而不是被打包进 `app.asar` 文件中。 #### 4. 使用 `extraFiles` 包含额外资源 如果 `dist` 中包含视频、图片等静态资源,建议使用 `extraFiles` 将其单独复制到安装包中,而不是依赖 ASAR: ```json { "extraFiles": ["./videos", "./cvideo"] } ``` 这种方式可以避免因 ASAR 归档而导致的资源访问问题。 --- ### 总结 要解决 `electron-vite` 打包后 `app.asar` 文件中缺少 `dist` 目录的问题,关键是确保 `dist` 被正确识别并包含在打包配置中。通过调整 `electron.config.json` 中的 `files` 和 `asar` 设置,结合合理的构建流程管理,可以有效避免此类问题的发生。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦好梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值