Jest "无法找到模块",在CI中使用typecript路径。

问题描述 投票:1回答:1

在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)

我不知道如何正确解释这个输出。

  1. permission-group.service.spec.ts:这是失败的测试
  2. Cannot find module '@cm/utils-server' from 'license.service.ts': 好的,测试或它的一些依赖性,使用的是 license.service.ts 并在 license.service.ts 归档 '@cm/utils-server' 模块找不到。
  3. error-indicator是什么意思(>parseLicenseInfo)?
    • 这是为导入 @cm/license-shared - 不为 @cm/utils-server 如2中的错误信息所示
    • @cm/utils-server 也被导入了,但在第 14 行下面的 2 行:所以这也许只是 jest 中的一个 bug?
jestjs tsconfig ts-jest nrwl-nx
1个回答
0
投票

现在,我们使用了一个变通的方法:我们在我们的mono-repo的多个tsconfig.json文件中定义了路径。我们把所有的路径都移到了根目录下的tsconfig,现在测试又能正常工作了。但我们并不真正理解为什么会这样。

而且一个缺点是,现在很容易意外地引用一个你不应该在lib中使用的路径(因为IDE现在总是使用所有的路径进行代码辅助)。

© www.soinside.com 2019 - 2024. All rights reserved.