Electron Forge执行npm run package时出现EBUSY错误的原因及解决方法
Electron Forge打包时EBUSY错误的成因与解决办法
嘿,这个EBUSY错误我之前帮好几个开发者解决过,本质就是打包要操作的目录被占用了,咱们一步步来拆解和解决:
错误成因
这个EBUSY: resource busy or locked错误说白了就是:Electron Forge在打包时要删除或修改D:\Repos\app\out\app-win32-x64目录,但这个目录(或者里面的文件)正被其他进程锁定着,导致Forge没法完成操作。常见的锁定场景有:
- 之前打包生成的应用程序还在后台运行,没彻底关闭
- 资源管理器正打开着这个输出目录的窗口,系统会锁定目录资源
- 杀毒软件、安全防护工具正在实时扫描这个目录里的文件,暂时占用了资源
- 上一次打包的Electron Forge进程没完全退出,残留的进程还握着目录的占用权限
解决办法
按下面的步骤逐一排查,基本都能解决问题:
- 彻底关闭相关进程:打开任务管理器,找到所有和你的Electron应用相关的进程(比如
electron.exe、你应用名称的.exe进程),全部右键结束任务,确保没有残留 - 关闭资源管理器窗口:如果你的资源管理器正对着
out\app-win32-x64或者out文件夹,立刻关掉这个窗口,避免系统锁定目录 - 临时关闭安全工具:有些杀毒软件会实时拦截新生成的程序文件,暂时关闭杀毒软件、防火墙之类的工具,再尝试打包(打包完成后记得重新开启)
- 手动清理输出目录:如果上面的步骤都没用,手动删除
D:\Repos\app\out整个文件夹(或者只删除app-win32-x64子目录),然后重新运行npm run package - 清理Forge缓存:有时候Forge的缓存会导致异常,运行命令
npx electron-forge clean清理缓存,之后再执行打包命令
内容的提问来源于stack exchange,提问作者Wenfang Du




