Angular 无法识别 karma.conf.js

问题描述 投票:0回答:3

在一个商业项目中,测试已经运行良好一段时间了。我们在 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 不存在。唯一的问题是,它确实存在。

我尝试过的其他事情:

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

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/ 高一级。我已经尝试过一些业力路径突变,包括:

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

partial angular client folder structure

javascript angular karma-runner
3个回答
0
投票

您可能已经完成了此检查,但您是否尝试过更新您的

package.json
以拥有 karma.conf 的路径,如下所示...?

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

0
投票

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

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

现在

ng test
按预期工作。


0
投票

我也有类似的问题。对我来说,解决方案是显式添加文件名。

ng test --karma-config karma.conf.js
© www.soinside.com 2019 - 2024. All rights reserved.