Angular 无法识别 karma.conf.js

Angular Doesn't Recognize karma.conf.js

在一个商业项目中,测试已经 运行 一段时间了。我们在 Angular 8 中删除了一个版本。在 master 上,我们升级到 Angular 9。现在版本需要一个修补程序,所以我检查分支并 运行 测试。这都在同一个回购/文件系统目录中。

它像 Angular core has no exported member ɵɵFactoryDef 一样失败,我很快确定 error is due to CLI version incompatibility

所以我全局卸载 ng CLI 并重新安装 npm i -g @angular/cli@8.2.0,与发布分支 package.json 一致。现在上面的错误消失了,但是当我尝试 ng test 时,CLI 坚持认为 karma.conf 不存在。唯一的问题是,它确实存在。

我尝试过的其他事情:

  1. rm -rfnpm i 从零开始
  2. npm cache verify
  3. 关闭并重新打开终端
  4. 重启电脑
  5. 用不同的名称创建一个新的 karma.conf 并指向 angular.json

ng cli 确实尊重 angular.json,因为下面的错误会根据我的业力文件名和路径而改变,但它仍然继续坚持 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/ 高一级。我已经尝试过一些业力路径突变,包括:

  1. "karmaConfig": "./src/karma.conf.js",
  2. "karmaConfig": "../../<correct folders>src/karma.conf.js",
  3. "karmaConfig": "src/karma.<change this>.js",

您可能已经完成了这项检查,但是您是否尝试过更新您的 package.json 以拥有 karma.conf 的路径,就像这样...?

"scripts": {
    "test": "karma start ./path_to_karma.conf.js"
}

在问题中提到的步骤之后,这最终为我解决了问题:

  1. 删除整个仓库
  2. 重新克隆(其实我做了一个浅克隆git clone <repo-url>.git --branch <ng8-branch> --depth 5
  3. 重新安装npm i

现在 ng test 按预期工作。