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

Detox测试运行失败:无法读取undefined的testEnvironmentOptions属性

Detox测试运行报错 Cannot read properties of undefined (reading 'testEnvironmentOptions') 修复方案

核心原因

该报错触发于Jest初始化测试环境阶段,本质是jest-environment-node构造函数未收到完整的入参,90%以上的场景由两类问题导致:

  1. 项目内存在多版本Jest依赖冲突
  2. 自定义Detox测试环境类的构造函数传参不兼容新版Jest规范

分步修复

  • 对齐全项目Jest相关依赖版本
    Detox对Jest版本一致性要求极高,只要项目内存在两个不同小版本的Jest相关包,就会触发上下文传参丢失的问题。
    先执行命令排查依赖树中的Jest版本:
    # npm用户
    npm ls jest jest-circus jest-environment-node
    # yarn用户
    yarn list jest jest-circus jest-environment-node
    # pnpm用户
    pnpm ls jest jest-circus jest-environment-node
    
    如果输出结果中出现多个不一致的版本号,直接删除对应包管理工具的lock文件、node_modules目录,重新执行依赖安装即可强制版本对齐。如果是Monorepo项目,必须保证根目录与e2e测试目录下的Jest版本完全统一,禁止在e2e目录单独安装一套独立版本的Jest。
  • 修正自定义Detox环境类的构造函数写法
    报错栈中明确指向了CustomDetoxEnvironment,最常见的问题是旧版Detox教程里的单参数构造函数写法不兼容Jest 28+版本的签名要求。
    找到e2e目录下的environment.js文件,检查构造函数逻辑:
    错误写法(仅传config参数,新版Jest不兼容)
    class CustomDetoxEnvironment extends DetoxCircusEnvironment {
      constructor(config) {
        super(config);
        this.initTimeout = 300000;
        // 其余自定义逻辑
      }
    }
    
    正确写法(同时传入config和context两个参数)
    class CustomDetoxEnvironment extends DetoxCircusEnvironment {
      constructor(config, context) {
        super(config, context);
        this.initTimeout = 300000;
        this.registerListeners({
          // 你的监听器配置
        });
      }
    }
    
    Jest 28版本之后调整了测试环境类的构造函数签名,必须同时传入配置对象和上下文对象,缺省context参数就会导致父类jest-environment-node读取testEnvironmentOptions时报空指针。
  • 独立配置e2e测试的Jest配置文件
    打开报错命令中提到的e2e/config.json,确保e2e测试的Jest配置完全独立,不要继承根目录下用于单元测试的Jest配置,尤其不要引入jest-expo等单元测试预设(这类预设会强制绑定jsdom测试环境和自带的Jest版本,和Detox依赖的node环境冲突)。
    Detox 20+版本可用的最小配置参考:
    {
      "testRunner": "jest-circus/runner",
      "testEnvironment": "./environment.js",
      "testTimeout": 120000,
      "testMatch": ["**/*.e2e.js"]
    }
    
  • 清缓存验证修复结果
    完成上述修改后,先清空Jest缓存再重新运行测试:
    npx jest --clearCache
    npx detox test -c 你的测试配置名
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:48:13