Angular执行测试报错Expected to be running in ProxyZone问题求助
你遇到的Expected to be running in 'ProxyZone', but it was not found报错本质是Angular测试逻辑调用时,zone.js的测试环境Zone未完成正确注册,可按以下步骤逐一排查解决:
排查步骤
- 检查测试入口导入顺序
默认测试入口为src/test.ts,必须保证zone.js/testing的导入在所有@angular/core/testing等Angular测试相关导入之前,顺序错误会直接导致ProxyZone注册失败。正确导入示例:
// 优先导入zone相关依赖 import 'zone.js'; import 'zone.js/testing'; // 后续再导入Angular测试工具 import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
修正zone.js导入路径
zone.js 0.11.x版本已经废弃了zone.js/dist/zone-testing这类带完整dist路径的导入写法,统一改为直接导入zone.js/testing即可,避免加载到冗余旧文件。校验版本兼容性
zone.js 0.11.4仅兼容Angular 12.x ~ 13.x版本:- 若当前Angular版本高于13,需将zone.js升级到0.13.x及以上匹配版本
- 若当前Angular版本低于12,需将zone.js降级到0.10.x匹配版本
清理重复导入
不要在polyfills.ts、angular.json的test配置的scripts字段中重复引入zone.js相关依赖,仅保留test.ts中的导入即可。清除依赖缓存
如果上述操作后仍报错,删除本地node_modules目录、package-lock.json/yarn.lock文件后重新执行npm install/yarn install,清除缓存的版本冲突。
内容的提问来源于stack exchange,提问作者Hardcore_Graverobber
相关产品推荐
相关产品推荐

