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

Expo React Native运行Jest报testEnvironmentOptions未定义错误

报错根因

错误由Jest生态依赖跨大版本混装导致API不兼容触发:

  • 项目中jest主包版本为26.6.3,单独安装的jest-config版本为28.1.0,而jest-expo@45.0.1依赖的是27.x版本的Jest全链路包。三个大版本的Jest依赖内部API存在破坏性变更、互不兼容,导致测试环境初始化时传入的配置对象缺失字段,读取testEnvironmentOptions时抛出类型错误。
修复方案

按以下步骤操作即可解决问题:

  1. 卸载存在版本冲突的依赖
    执行以下命令移除版本不匹配的包:
npm uninstall jest jest-config @types/jest

单独安装jest-config没有必要,jest主包和jest-expo preset已经内置对应版本的配置能力,跨版本引入该包是本次报错的直接诱因

  1. 安装和Expo SDK 45版本对齐的Jest依赖
    Expo SDK 45 适配的Jest主版本为27.x,执行命令安装对应版本的依赖:
npm install --save-dev jest@^27.5.1 @types/jest@^27.5.2 ts-jest@^27.1.5
  1. 调整jest.config.js配置
    移除从独立jest-config包引入defaults的逻辑,直接声明配置项,修改后的配置内容如下:
module.exports = {
  preset: 'jest-expo',
  transformIgnorePatterns: [
    'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)',
  ],
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  setupFiles: ['<rootDir>/jest/setup.js'],
  setupFilesAfterEnv: ['@testing-library/jest-native/extend-expect', 'core-js'],
  testPathIgnorePatterns: [
    '<rootDir>/.expo/',
    '<rootDir>/node_modules/',
    '<rootDir>/web-build/',
  ],
}
  1. 清除缓存后重新执行测试
    依次执行以下命令清理Jest缓存并运行测试:
npx jest --clearCache
npm run test

修复后快照测试可正常执行通过,不会再出现该类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:44:05