Ember.js项目执行ember build/serve出现EBUSY错误求解决
我看到你在维护一个旧版Ember.js项目(ember-cli 2.5.1,基于Windows x64环境)时,运行ember build或ember serve遇到了EBUSY: resource busy or locked, symlink错误,而且试过常规方案没效果,下面结合你的情况梳理问题和有效解决办法:
你的环境与错误详情
环境信息
ember-cli: 2.5.1 http_parser: 2.7.0 node: 5.12.0 v8: 4.6.85.32 uv: 1.8.0 zlib: 1.2.8 ares: 1.10.1-DEV icu: 56.1 modules: 47 openssl: 1.0.2h os: win32 x64
核心错误内容
Build failed. The Broccoli Plugin: [BroccoliMergeTrees: Addon#treeFor (ember-data - addon)] failed with:
Error: EBUSY: resource busy or locked, symlink 'C:\myprojectfolder\tmp\broccoli_merge_trees-output_path-z7GLec0z.tmp' -> 'C:\myprojectfolder\tmp\broccoli_merge_trees-input_base_path-dgyw33ia.tmp\4'
at Error (native)
at Object.fs.symlinkSync (fs.js:945:18)
at symlinkWindows (C:\myprojectfolder\node_modules\symlink-or-copy\index.js:123:18)
at symlinkOrCopySync (C:\myprojectfolder\node_modules\symlink-or-copy\index.js:63:5)
at C:\myprojectfolder\node_modules\broccoli-plugin\read_compat.js:86:11
...(省略后续调用栈信息)
已验证的有效解决方案
你提到尝试npm清理缓存无效,最终通过删除Windows用户临时目录中的文件解决了问题,这里把操作步骤整理得更清晰,方便其他开发者参考:
- 先关闭所有相关进程:包括Ember CLI终端窗口、打开项目的编辑器(比如VS Code、WebStorm)、可能占用文件的后台工具
- 打开Windows用户临时目录:按下
Win + R组合键,输入%USERPROFILE%\AppData\Local\Temp后回车 - 删除该目录下的所有文件和文件夹(如果有提示某文件被占用,直接跳过即可)
- 回到项目目录,删除项目内的
tmp文件夹(这是Broccoli构建生成的临时目录,清理后不会影响项目) - 最后重新运行
ember serve或ember build即可
额外排查方向(若上述方案仍失效)
这类错误在Windows环境下大多是进程占用导致的,还可以试试这些思路:
- 以管理员身份打开终端运行Ember命令
- 临时关闭Windows Defender实时保护(测试后记得恢复)
- 检查是否有杀毒软件、云同步工具(比如OneDrive)在扫描项目目录,暂时暂停这些工具
内容的提问来源于stack exchange,提问作者parivajk

