在 Jest 测试运行期间,一个模块的所有导入均未定义

Sha*_*ung 13 typescript reactjs jestjs create-react-app

Jest、create-react-app 和 typescript 的奇怪错误。

今晚 Jest 开始无法正确导入我的“./ProcessStore”模块。该模块是我的测试导入的内容的传递依赖项。

我看到的错误是我导入的内容未定义。

当我执行import * as what from "./ProcessStore"并记录(什么)时,它会打印所有导出,但值未定义。就像{default: undefined, ResourceChange: undefined}导出的两个类一样。它应该是{default: <a class>, ResourceChange: <a class>}。

这只是一个文件。所有其他文件都有效。

当我使用 npm start 时,它起作用了 --- 这只是一个玩笑问题。

另外,如果我将损坏的文件重命名为./ProcessStore2,它也可以工作。

我尝试过./node_modules/jest --clearCache,但没有帮助。

如果相关的话,我通常使用craco。暂时切换回反应脚本并没有帮助。

我正在使用react-scripts 4.0.3(最新版本)。

到底是怎么回事?我该如何解决这个愚蠢的问题?

Sha*_*ung 21

这是由我的项目中的循环依赖引起的。

循环依赖导致 Jest 返回一个空模块。我相信第二次进入模块时,它将有未定义的内容。

就我而言,链条是ProcessStore.ts -> stores.ts -> ProcessStore.ts。stores.ts因此,在加载时ProcessStore.ts,流程存储已经被加载,因此一切都是未定义的。