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

React Native Jest测试报错:__fbBatchedBridgeConfig未设置

Jest测试报错:Invariant Violation: __fbBatchedBridgeConfig is not set, cannot invoke native modules

这个错误的核心原因是Jest运行在Node.js环境中,无法直接调用React Native的原生模块,而react-native-config依赖原生桥接层读取环境变量,导致测试时触发报错。以下是针对性的解决方案:

1. Mock react-native-config模块

直接在测试环境中模拟该模块的行为,绕过原生调用:

  • 在项目根目录创建__mocks__/react-native-config.js文件,模拟项目中用到的环境变量:
export default {
  // 替换为你实际使用的环境变量键值对
  API_BASE_URL: 'https://mock-api.example.com',
  APP_ENV: 'test',
};
  • 修改jest.config.js,添加模块映射:
module.exports = {
  // 保留现有配置,新增或修改以下内容
  moduleNameMapper: {
    '^react-native-config$': '<rootDir>/__mocks__/react-native-config.js',
    // 其他已有的模块映射...
  },
  preset: 'react-native', // 确保使用React Native的Jest预设
};

2. 调整Babel配置,测试环境禁用原生插件

如果项目使用babel-plugin-react-native-config,需要在测试环境中跳过该插件:
修改babel.config.js:

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    // 其他插件保留,仅在非测试环境加载react-native-config插件
    process.env.NODE_ENV !== 'test' && [
      'module:react-native-config',
      { envFile: '.env' }
    ]
  ].filter(Boolean), // 过滤掉测试环境下的false值
};

3. 确保Jest加载React Native的基础配置

检查jest.config.js中的setupFiles,确保已加载React Native的Jest初始化文件:

module.exports = {
  // 其他配置...
  setupFiles: [
    './node_modules/react-native/jest/setup.js',
    // 你的其他测试初始化文件...
  ],
};

4. 检查依赖版本兼容性

确认package.json中以下依赖版本与你的React Native版本匹配:

  • jest
  • @testing-library/react-native
  • jest-react-native
    若存在版本冲突,尝试重新安装依赖:
rm -rf node_modules package-lock.json yarn.lock
npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:47:20