Electron Forge使用绝对路径解析get-windows包导致应用分发失败
Electron Forge 打包后无法正确解析 get-windows 依赖路径
我开发的Electron应用集成了get-windows npm包,但分发时出现问题:Electron Forge会以绝对路径而非相对路径解析该包,导致应用运行时找不到依赖。
错误日志
[2024-06-26 11:11:04.968] [info] getActiveWindow encountered error{"errno":-2,"code":"ENOENT","syscall":"spawn /Users/runner/work/<BRANCH_NAME>/node_modules/get-windows/main","path":"/Users/runner/work/<BRANCH_NAME>/node_modules/get-windows/main","spawnargs":["--no-screen-recording-permission"],"cmd":"/Users/runner/work/<BRANCH_NAME>/node_modules/get-windows/main --no-screen-recording-permission","stdout":"","stderr":""}
从日志可见,应用尝试从GitHub Actions runner的本地路径运行get-windows包,而非打包后的应用内部路径。
当前Electron Forge相关配置
asar: { unpack: '**/node_modules/get-windows/**' }, hooks: { packageAfterPrune: async (_forgeConfig, buildPath) => { const cmd = process.platform === "win32" ? "yarn.cmd" : "yarn"; try { spawnSync(cmd, ["add", "get-windows", "--force"], { cwd: buildPath, stdio: "inherit", }); } catch (err) { console.log("caught exception in packageAfterPrune", err); } },
使用版本信息
- Node: 20
- Electron: 26.0.0
- electron-forge/cli: ^6.0.4
- get-windows: ^9.1.1
已尝试的解决方法
- 移除asar选项,触发其他运行时错误
- 移除packageAfterPrune钩子,问题未得到解决
内容的提问来源于stack exchange,提问作者atrinh
相关产品推荐
相关产品推荐

