React Native配置Detox E2E测试时jest-circus报路径导出错误
报错根因
该报错由依赖版本不兼容导致:
- Detox 18.x 仅支持 jest-circus 26 及更低版本,jest-circus 27 重构了内部文件导出规则,移除了 Detox 18 代码中引用的
./build/types路径,触发导出不存在的错误。 - 项目现有 jest 版本为 24.9.0,和 jest-circus 27.x 本身大版本不一致,也会存在潜在兼容问题,原有单元测试未报错是因为未调用 jest-circus 相关逻辑。
解决方案
可根据项目升级接受度二选一:
方案1:降级 jest-circus 到兼容版本(改动最小,不影响现有项目逻辑)
- 卸载当前高版本 jest-circus:
npm uninstall jest-circus --save-dev
若使用 yarn 则执行:yarn remove jest-circus --dev - 安装适配 Detox 18.x 的版本:
npm install jest-circus@26.x --save-dev
若使用 yarn 则执行:yarn add jest-circus@26.x --dev - 清除缓存后重试:删除 node_modules 与包锁文件,重新安装依赖后执行
detox clean-framework-cache && detox build --configuration ios,再运行测试即可。
方案2:升级 Detox 到高版本(适配新特性)
- 将 Detox 升级到 20.x 及以上版本,该版本范围已适配 jest-circus 27+ 的导出规则。
- 升级完成后根据对应版本的配置要求调整 Detox 相关配置,同时将 jest 版本同步升级到和 jest-circus 匹配的大版本,避免其他兼容问题。
额外排查项
- 全局 jest 配置冲突排查:若项目根目录存在
jest.config.js等全局 jest 配置,需添加配置testPathIgnorePatterns: ["<rootDir>/e2e/"],避免单元测试的全局配置覆盖 E2E 测试的独立配置。 - 依赖版本对齐:jest 和 jest-circus 需保持大版本一致,若担心升级 jest 影响现有单元测试,可通过包管理工具的多版本依赖功能为 E2E 测试单独安装局部 jest 依赖。
内容的提问来源于stack exchange,提问作者Rodrigo Veiga
相关产品推荐
相关产品推荐

