在一个商业项目中,测试已经运行良好一段时间了。我们在 Angular 8 中删除了一个版本。在 master 上,我们升级到 Angular 9。现在该版本需要修补程序,所以我检查分支并运行测试。这些都在同一个存储库/文件系统目录中。
它像
Angular core has no exported member ɵɵFactoryDef
一样失败,我很快确定错误是由于 CLI 版本不兼容。
因此我全局卸载 ng CLI 并重新安装
npm i -g @angular/[email protected]
,与发布分支 package.json 一致。现在上面的错误消失了,但是当我尝试 ng test
时,CLI 坚持认为 karma.conf 不存在。唯一的问题是,它确实存在。
我尝试过的其他事情:
rm -rf
和 npm i
从头开始npm cache verify
ng cli 确实尊重 angular.json,因为以下错误将根据我的 karma 文件名和路径而改变,但在 MacOS 上它仍然坚持认为以下文件不存在: 在 Mac 上,我仍然得到:
ERROR [config]: File /Users/<various paths that totally exist>/src/karma.<tried different things here>.js does not exist!
有什么想法吗?谢谢!!
--- 编辑:根据请求在下面添加一些技术信息。
来自
angular.json
的测试块:
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"codeCoverage": true,
"karmaConfig": "src/karma.conf.js",
"scripts": ["node_modules/jquery/dist/jquery.js", "node_modules/jquery-mockjax/dist/jquery.mockjax.js"],
"assets": [
"src/favicon.ico",
{
"glob": "**/*.html",
"input": "./src/legacy",
"output": "./"
}
]
}
}
部分客户端文件夹结构。请注意,
storybook/
和 test/
是 src/
的同级,而 angular.json 比 `src/ 高一级。我已经尝试过一些业力路径突变,包括:
"karmaConfig": "./src/karma.conf.js",
"karmaConfig": "../../<correct folders>src/karma.conf.js",
"karmaConfig": "src/karma.<change this>.js",
您可能已经完成了此检查,但您是否尝试过更新您的
package.json
以拥有 karma.conf 的路径,如下所示...?
"scripts": {
"test": "karma start ./path_to_karma.conf.js"
}
在问题中提到的步骤之后,这最终为我解决了这个问题:
git clone <repo-url>.git --branch <ng8-branch> --depth 5
npm i
现在
ng test
按预期工作。
我也有类似的问题。对我来说,解决方案是显式添加文件名。
ng test --karma-config karma.conf.js