测试套件一直运行得很好,直到没有。奇怪的事情只发生在我的机器上,CI工作正常。
我们的项目使用了Typecript,React,Jest和酵素,这就是我运行yarn jest时得到的
Test suite failed to run
ReferenceError: enzyme_1 is not defined
6 | // (global as any).jQuery = $
7 |
> 8 | Enzyme.configure({ adapter: new Adapter() })
| ^
9 |
at Object.<anonymous> (spec/javascripts/setupTests.ts:8:1)我试着清理纱线缓存,再次克隆回购,重新安装节点。我一点也不懂。有什么想法吗?
相关配置文件:
编辑:
此错误发生在节点10.19.0中。安装12.22.2后,错误显示一条新消息:
ReferenceError: Cannot access 'enzyme_1' before initialization发布于 2022-11-14 10:21:06
显然,关于js模块,tsconfig和jest.config之间存在一些不一致之处。
在tsconfig中,模块解析设置为Node,模块设置为ES6,而jest配置文件使用预设的ts-jest/presets/js-with-babel将.ts文件转换为CommonJS。
实际上,如果使用setupTests.js而不是setupTests.ts,则测试运行时不会出现错误。
解决方案A(面向节点):集模块到CommonJS在tsconfig中。
- "module": "ES6",
+ "module": "CommonJS",解决方案B(面向web):使用适当的预设,在本例中ts-jest/presets/default-esm将.ts文件转换为ES模块。
- preset: 'ts-jest/presets/js-with-babel',
+ preset: 'ts-jest/presets/default-esm',另外,moduleResolution应该是ESM的NodeNext,而不是Node。请参阅https://www.typescriptlang.org/tsconfig#moduleResolution
https://stackoverflow.com/questions/74402417
复制相似问题