在 Jest 测试期间,一个模块的所有导入均未定义 运行
All imports are undefined for one module during Jest test run
Jest、create-react-app 和 typescript 的奇怪错误。
今晚 Jest 开始无法正确导入我的“./ProcessStore”模块。这个模块是我的测试导入的东西的传递依赖。
我看到的错误是我导入的东西是未定义的。
当我执行 import * as what from "./ProcessStore"
和 log(what) 时,它会打印所有导出,但值未定义。像{default: undefined, ResourceChange: undefined}
两个类 即导出。应该是 {default: <a class>, ResourceChange: <a class>}
.
就那么一个文件。所有其他文件都有效。
当我使用 npm start 时,它起作用了 --- 这是 Jest 独有的问题。
此外,如果我将损坏的文件重命名为 ./ProcessStore2
,它也有效。
我尝试了 ./node_modules/jest --clearCache
,但没有用。
如果相关,我通常使用 craco。暂时切换回 react-scripts 没有帮助。
我正在使用 react-scripts 4.0.3(最新版本)。
这是怎么回事?我该如何解决这个愚蠢的问题?
这是由我的项目中的循环依赖引起的。
循环依赖导致 Jest return 一个空模块。我相信第二次进入模块时,它会有未定义的内容。
在我的例子中,链是 ProcessStore.ts -> stores.ts -> ProcessStore.ts
。所以当 stores.ts
加载 ProcessStore.ts
时,进程存储已经加载,所以一切都是未定义的。
当我像这样导入一个文件时,我运行进入了这个
import { myHook } from 'services/hooks/myHook'
在另一个文件中
import { myHook } from 'services/hooks'
有一个索引文件
// src/services/hooks/index.ts
export * from './myHook.ts'
将它们全部转换为使用索引路径修复了它。我不认为我在任何地方都有循环依赖,我从来没有能够真正理解哪里出了问题。
Jest、create-react-app 和 typescript 的奇怪错误。
今晚 Jest 开始无法正确导入我的“./ProcessStore”模块。这个模块是我的测试导入的东西的传递依赖。
我看到的错误是我导入的东西是未定义的。
当我执行 import * as what from "./ProcessStore"
和 log(what) 时,它会打印所有导出,但值未定义。像{default: undefined, ResourceChange: undefined}
两个类 即导出。应该是 {default: <a class>, ResourceChange: <a class>}
.
就那么一个文件。所有其他文件都有效。
当我使用 npm start 时,它起作用了 --- 这是 Jest 独有的问题。
此外,如果我将损坏的文件重命名为 ./ProcessStore2
,它也有效。
我尝试了 ./node_modules/jest --clearCache
,但没有用。
如果相关,我通常使用 craco。暂时切换回 react-scripts 没有帮助。
我正在使用 react-scripts 4.0.3(最新版本)。
这是怎么回事?我该如何解决这个愚蠢的问题?
这是由我的项目中的循环依赖引起的。
循环依赖导致 Jest return 一个空模块。我相信第二次进入模块时,它会有未定义的内容。
在我的例子中,链是 ProcessStore.ts -> stores.ts -> ProcessStore.ts
。所以当 stores.ts
加载 ProcessStore.ts
时,进程存储已经加载,所以一切都是未定义的。
当我像这样导入一个文件时,我运行进入了这个
import { myHook } from 'services/hooks/myHook'
在另一个文件中
import { myHook } from 'services/hooks'
有一个索引文件
// src/services/hooks/index.ts
export * from './myHook.ts'
将它们全部转换为使用索引路径修复了它。我不认为我在任何地方都有循环依赖,我从来没有能够真正理解哪里出了问题。