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

升级React Native后Jest运行react-native-modalize相关测试报错如何解决?

报错原因

该错误是升级React Native版本后,Jest运行环境的模拟值和react-native-modalize@2.0.8的内部实现不匹配导致的:
react-native-modalize的devices.js工具文件默认假设Android平台下React Native.Platform.Version是包含major/minor/patch属性的对象,但新版React Native在Jest默认模拟配置中,Android环境的Platform.Version直接返回数值类型的系统版本号(例如33),读取minor属性时自然触发undefined报错。

另外你当前Jest配置的transformIgnorePatterns仅豁免了react-native本身的转译,react-native-modalize的ES6代码没有被Babel转译也可能加剧该问题。

解决方案

不需要降级依赖,按以下步骤修改配置即可修复:

  1. 新增Jest初始化配置文件,例如在项目根目录新建jest-setup.js,写入以下内容:
import { Platform } from 'react-native';

// 修复Platform.Version结构不匹配问题
if (Platform.OS === 'android') {
  Platform.Version = {
    major: 13,
    minor: 0,
    patch: 0
  };
}

// 可选:如果不需要测试Modalize的内部逻辑,可直接模拟整个组件,性能更高
jest.mock('react-native-modalize', () => {
  const React = require('react');
  return {
    Modalize: jest.fn(({ children }) => React.createElement('View', null, children))
  };
});
  1. 修改package.json中的Jest配置,新增初始化文件引用、更新转译豁免规则:
"jest": {
  // 其余原有配置保持不变
  "setupFiles": [
    "./node_modules/react-native-gesture-handler/jestSetup.js",
    "<rootDir>/jest-setup.js"
  ],
  "transformIgnorePatterns": [
    "/node_modules/(?!(react-native|react-native-modalize)/).+"
  ]
}

配置修改完成后重新运行测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:10