electron使用electron-forge创建的项目,结合vite+vue,报错An unhandled rejection has occurred inside Forge

文章讲述了在使用ElectronForge构建应用时遇到的Anunhandledrejection错误,源于asar库中文件路径处理的问题。解决方法是修改`node_modules/electron/asar/lib/filesystem.js`中的代码并使用`patch-package`临时修复。问题与`packagerConfig.asar`配置有关,全开asar会导致运行问题,关闭则无法打包。
摘要由CSDN通过智能技术生成

版本号:

electron: 29.1.4

@electron-forge/plugin-vite: ^7.3.0

@vitejs/plugin-vue: ^5.0.4

vite: ^5.0.12

执行 npm run make = electron-forge make 时:

An unhandled rejection has occurred inside Forge:
Error: /var/folders/8p/s4m7j1rn6z75zdkts44bvm980000gn/T/electron-packager/tmp-t0jfPi/Electron.app/Contents/Resources/app/node_modules/@vue/compiler-core/node_modules/.bin/parser: file "../../../../../../../../../../../../var/folders/8p/s4m7j1rn6z75zdkts44bvm980000gn/T/electron-packager/tmp-t0jfPi/Electron.app/Contents/Resources/app/node_modules/@babel/parser/bin/babel-parser.js" links out of the package
at Filesystem.insertLink (/Users/mac/工作/学习/electron-demo/node_modules/@electron/asar/lib/filesystem.js:106:13)
    at handleFile (/Users/mac/工作/学习/electron-demo/node_modules/@electron/asar/lib/asar.js:132:20)
    at next (/Users/mac/工作/学习/electron-demo/node_modules/@electron/asar/lib/asar.js:148:11)
    at next (/Users/mac/工作/学习/electron-demo/node_modules/@electron/asar/lib/asar.js:149:12)
    ...

点击 node_modules/@electron/asar/lib/filesystem.js 查看:

104行 

const link = path.relative(fs.realpathSync(this.src), path.join(parentPath, symlink))

看出不对劲了,relative的第一个参数用的fs.realpath,第二个却没用fs.realpath

解决办法:

把 node_modules/@electron/asar/lib/filesystem.js 104行改成 const link = path.relative(fs.realpathSync(this.src), fs.realpathSync(path.join(parentPath, symlink)))

然后安装 patch-package,执行 npx patch-package @electron/asar

后话:

根本原因在于 forge.config.js 的设置 packagerConfig.asar 为 true,但如果设成 false,虽然没有报错,但打包后的 exe/app 就运行不了,不知道为什么-_-

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值