Angular项目运行npm test/ng test报错Cannot read property 'pkg' of undefined
报错根因
这个错误由测试覆盖率工具的依赖版本不兼容导致,和你编写的测试用例无关,你的测试用例语法完全符合Angular单元测试规范。报错触发在istanbul覆盖率报告生成阶段,karma-coverage-istanbul-reporter与依赖的istanbul-api版本不匹配,或者和当前Angular版本不兼容。
解决方案
- 卸载旧的冲突依赖
运行如下命令删除存在兼容问题的依赖包:
npm uninstall karma-coverage-istanbul-reporter istanbul-api istanbul-lib-coverage --save-dev
安装对应版本兼容依赖
根据你使用的Angular版本选择对应安装命令:- Angular 12及以上版本:Angular官方已弃用karma-coverage-istanbul-reporter,改用官方适配的
karma-coverage,执行:
npm install karma-coverage --save-dev- Angular 11及以下版本:安装经过验证的兼容版本:
npm install karma-coverage-istanbul-reporter@3.0.3 istanbul-api@3.0.0 --save-dev- Angular 12及以上版本:Angular官方已弃用karma-coverage-istanbul-reporter,改用官方适配的
调整karma配置文件(仅Angular 12及以上版本需要)
打开项目根目录下的karma.conf.js文件:
- 在reporters配置项中,将
coverage-istanbul替换为coverage - 删除原有
coverageIstanbulReporter配置块,替换为官方coverage对应的配置即可,无需自定义参数的话可以保留默认配置。
- 重新安装依赖运行测试
rm -rf node_modules package-lock.json npm install ng test
内容的提问来源于stack exchange,提问作者tiana
相关产品推荐
相关产品推荐

