在Gitlab-CI环境下,我们的2个Jest测试失败了,原因是 Cannot find module
. 奇怪的是,它在我的本地Win10机器上工作 - 即使我在一个类似的docker容器中运行测试 (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 行:所以这也许只是 jest 中的一个 bug?现在,我们使用了一个变通的方法:我们在我们的mono-repo的多个tsconfig.json文件中定义了路径。我们把所有的路径都移到了根目录下的tsconfig,现在测试又能正常工作了。但我们并不真正理解为什么会这样。
而且一个缺点是,现在很容易意外地引用一个你不应该在lib中使用的路径(因为IDE现在总是使用所有的路径进行代码辅助)。