【发布时间】:2020-03-25 17:55:15
【问题描述】:
在 Gitlab-CI 环境中,我们的 Jest 测试 2 失败并显示 Cannot find module。
奇怪的是它可以在我的本地 Win10 机器上运行——即使我在类似的 docker-container (node 12.12.0) 中运行测试。
这是控制台输出:
FAIL apps/server/src/domain/dashboard/permission-group.service.spec.ts
Test suite failed to run
Cannot find module '@cm/utils-server' from 'license.service.ts'
9 | isLicenseFileContent,
10 | LicenseStatus,
> 11 | parseLicenseInfo
| ^
12 | } from '@cm/license-shared';
13 | import { ExitCode } from '../../util/exit-codes';
14 | import { readFile } from '@cm/utils-server';
at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)
at Object.<anonymous> (src/domain/license/license.service.ts:11:24)
我不确定如何正确解释这个输出:
-
permission-group.service.spec.ts:这是失败的测试 -
Cannot find module '@cm/utils-server' from 'license.service.ts':
好的,测试或它的一些依赖项,使用license.service.ts并且在license.service.ts文件中找不到'@cm/utils-server'模块。 - 错误指示符(
>parseLicenseInfo)是什么意思?- 这是用于导入
@cm/license-shared- 不是用于@cm/utils-server,如 2 中的错误消息所示 -
@cm/utils-server也被导入,但在第 14 行下面有 2 行:所以这可能只是一个开玩笑的错误吗?
- 这是用于导入
【问题讨论】:
-
遇到同样的问题...如果您找到解决方案,我很乐意听到。
-
@Donovan 目前只是一种解决方法:我们在 mono-repo 的多个
tsconfig.json文件中定义了paths。我们将所有路径移至 root-tsconfig,现在测试再次运行。但我们并不真正理解为什么会这样。这有一个缺点,现在很容易意外引用您不应该在 lib 中使用的路径(因为 IDE 现在总是使用所有路径来进行代码辅助)
标签: jestjs tsconfig ts-jest nrwl-nx