You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Jest测试遇enzyme_1未定义错误,CI正常求排查方案

本地Jest+Enzyme测试报错排查思路

针对本地执行yarn jest出现ReferenceError: enzyme_1 is not defined或Cannot access 'enzyme_1' before initialization,但CI环境正常的问题,可按以下方向排查:

1. 核对TypeScript模块配置与Jest解析逻辑

  • 检查setupTests.ts的Enzyme导入方式:如果用的是默认导入import Enzyme from 'enzyme',尝试改为命名导入import * as Enzyme from 'enzyme';反之也可互换测试。
  • 查看tsconfig.json的compilerOptions:确保module配置(比如CommonJS)与Jest的模块解析逻辑匹配,同时可尝试开启allowSyntheticDefaultImports: true,兼容ES模块与CommonJS模块的导入差异。

2. 验证Jest配置与依赖版本一致性

  • 对比本地与CI环境的Jest版本:执行yarn list jest查看本地版本,确认和CI环境完全一致,版本差异可能导致模块加载逻辑不同。
  • 检查jest.config.js的setupFilesAfterEnv配置:确认setupTests.ts的路径正确,且没有其他前置加载的配置文件提前引用了Enzyme。

3. 确认Enzyme适配器与React版本兼容性

  • 检查enzyme-adapter-react-xx版本是否与项目React版本匹配(比如React 16对应adapter-react-16,React 17需用@wojtekmaj/enzyme-adapter-react-17),版本不兼容会导致编译后变量异常。
  • 重新安装Enzyme及适配器:执行yarn remove enzyme enzyme-adapter-react-xx && yarn add -D enzyme enzyme-adapter-react-xx(替换xx为对应版本),清理可能的依赖损坏。

4. 排查Node版本带来的模块加载差异

  • Node 10到12对ES模块的处理逻辑有变化,若项目混用CommonJS与ES模块,易出现变量初始化顺序问题。可在jest.config.js中添加transformIgnorePatterns,确保Enzyme相关依赖被正确转译:
    transformIgnorePatterns: [
      '/node_modules/(?!(enzyme|enzyme-adapter-react-xx)/)'
    ]
    

5. 清理Jest自身缓存与编译残留

  • 执行yarn jest --clearCache清理Jest的测试缓存,避免旧的编译文件干扰。
  • 检查tsconfig.json的outDir配置,确认其路径未与Jest的roots/testMatch路径重叠,防止Jest加载未编译的TS文件或旧JS产物。

内容的提问来源于stack exchange,提问作者josemigallas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:10:20