在 nx 中使用 jest 时找不到模块

Posted

技术标签:

【中文标题】在 nx 中使用 jest 时找不到模块【英文标题】:Cannot find module when using jest in nx 【发布时间】:2021-07-06 07:06:54 【问题描述】:

我有一个 nx 工作区,我正试图将其转移到 jest 中。起初我收到一个关于 PointerEvent 未定义的错误。建议的解决方法是进行 Object.defineProperty(window, 'PointerEvent'...它。我在 test-setup 中导入它,就像你导入 jest-preset-angular 一样。它在我转换的前 15 个库中工作,但最新的一个在运行测试时抛出此错误。

我已经将这个库与我能想到的所有其他库进行了比较,没有区别。我完全没有想法。说我对这项努力感到沮丧是轻描淡写的。希望有人在那里有一个大型的 nx 回购并处理了这个问题。似乎我得到的每个答案都假设我选择 nx 只有一个应用程序和一两个库。我无法提供回购,因为这个错误是如此随机,我不知道如何重现它。 je-test-helper 在 node_modules 中,正如我所说的,它的所有其他相同用法都有效。

【问题讨论】:

【参考方案1】:

在非常相似的环境中遇到同样的问题 在 jest.config.js 中尝试了有关导入和模块目录、root... 的所有内容

运气不好

在一天结束时,它看起来像 jest-runner-groups 包问题

为什么? 因为我试图通过组运行器只运行一个测试,但是当我尝试运行所有测试(不使用运行器)或来自 IDE(VS 中的 jest runner 扩展)的一个特定测试时,它会 通过

因此我认为解决方案可能会以不同的方式运行测试。(?我不知道)

在 test.spec.ts 文件中我使用以下注释:

/**
 * @group runthis
 */
import ...

我如何在控制台中运行它:

npm run test:unit -- -group=runthis

package.json

...
scripts:
 "test:unit": "jest",
...
devDepencies:
 "jest-runner-groups": "^2.1.0",

jest.preset.js

const nxPreset = require('@nrwl/jest/preset');
module.exports = 
  runner: 'groups',
  ...

【讨论】:

以上是关于在 nx 中使用 jest 时找不到模块的主要内容,如果未能解决你的问题,请参考以下文章

运行“排毒测试”时找不到模块@jest/reporters

在 Angular 中使用 SystemJs 导入时找不到模块

在使用 jest 的 vue 测试中找不到模块“@jest/globals”

在 NPM 注册表中发布的 Typescript 模块 - 在不同项目中使用时找不到模块

在使用模块 xlsx 样式时找不到命名空间 XLSX

Angular 在构建时找不到模块(仅限产品)