Ubuntu用Electron Forge构建Snap包时未处理拒绝错误排查
问题说明
- 此问题并非《Forge内部出现未处理拒绝:找不到Electron依赖包》的重复问题
- 该问题的解决方案是在
package.json中添加author和description字段,我已完成此操作。
详细情况
尝试用Electron Forge构建Snap包
- 项目已配置好
forge.config.js,可正常构建deb、rpm、Windows、Mac(zip和dmg)等格式的发布包 - 当前尝试通过官方指定的@electron-forge/maker-snap包构建Snap包
- 执行
$ npm run make命令(Electron项目官方构建命令) - 已尝试新建目录克隆代码重新构建,仍出现相同错误
报错信息
An unhandled rejection has occurred inside Forge: Error: Command failed with a non-zero return code (2): /usr/bin/snapcraft snap --output=/home/raddev/dev/electron/CYaPass-Electron/out/make/snap/x64/cyapass_1.4.4_amd64.snap at ChildProcess.<anonymous> (/home/raddev/dev/electron/CYaPass-Electron/node_modules/@malept/cross-spawn-promise/dist/src/index.js:99:24) at ChildProcess.emit (node:events:514:28) at ChildProcess.emit (node:domain:489:12) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5)
构建状态
项目可成功构建为deb包,但Snap包打包环节失败。
已尝试的解决措施
- 执行
rm -rf out删除构建目标目录,让npm重新创建以确保权限 - 调整
forge.config.js中Snap构建的各类配置 - 尝试手动执行snapcraft命令,但缺少打包器生成的yaml文件
实际失败原因
实际是本地snapcraft调用失败,当前snapcraft版本为snapcraft 7.5.2,失败的命令为:
/usr/bin/snapcraft snap
--output=/home/raddev/dev/electron/CYaPass-Electron/out/make/snap/x64/cyapass_1.4.4_amd64.snap
排查npm库代码后发现仅为异常抛出点,未找到根本原因。
进一步排查
- 通过
npx electron-installer-snap --src=out/myappname-linux-x64命令尝试,得到额外提示:需要安装multipass - 执行
sudo snap install multipass安装后,仍报错无法连接multipass套接字;重启机器后再次尝试,出现路径不存在等错误,报错代码仍为2
环境复现
在VirtualBox中安装Debian系统,配置好依赖后执行npm run make,出现完全相同的失败情况。
内容的提问来源于stack exchange,提问作者raddevus
相关产品推荐
相关产品推荐

