Angular项目Jest测试触发EBUSY资源锁定问题求助
解决Nx+Jest执行测试时的EBUSY资源锁定错误
强制禁用Jest并行执行
直接在项目的jest.config.ts或者project.json的test配置里限制并发数为1:- 若用
jest.config.ts,添加配置项:export default { // 其他原有配置 maxWorkers: 1, }; - 若用
project.json,在targets.test.options里加参数:"test": { "executor": "@nrwl/jest:jest", "options": { "jestConfig": "apps/your-project/jest.config.ts", "maxWorkers": 1 } }
- 若用
修改Jest缓存目录
把默认的C盘Temp缓存迁移到项目内部,避免系统级文件锁定。在jest.config.ts里添加:export default { // 其他原有配置 cacheDirectory: '<rootDir>/jest-cache', };记得把
jest-cache目录加到.gitignore里,防止提交到代码仓库。排查
setup-jest.ts的资源占用
错误栈起始于这个文件的导入语句,检查里面的代码:有没有全局文件读写操作、未释放的资源连接(比如某些测试工具初始化时持有文件锁),这类操作在并行执行时容易引发资源冲突。清理Nx全局缓存
执行Nx的重置命令,清空Nx的缓存和状态,解决可能的缓存冲突:nx reset检查Windows系统级文件锁定
Windows Defender或其他杀毒软件可能会扫描Temp目录的文件,导致Jest无法正常访问。可以临时关闭实时保护(测试完成后记得打开),或者把Jest缓存目录加入杀毒软件的排除列表。
内容的提问来源于stack exchange,提问作者Tim L
相关产品推荐
相关产品推荐

