在 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 时找不到模块的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular 中使用 SystemJs 导入时找不到模块
在使用 jest 的 vue 测试中找不到模块“@jest/globals”