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

React Native 0.69报ViewPropTypes移除及AppRegistry错误如何解决

React Native 0.69.0 ViewPropTypes移除报错及连带AppRegistry错误解决方案

问题根因

React Native 0.69 版本正式从核心包中移除了ViewPropTypes属性,要求开发者迁移使用deprecated-react-native-prop-types包导出的对应实现。你看到的AppRegistry is not a registered callable module是JS bundle初始化阶段因ViewPropTypes引用错误直接崩溃触发的连带异常,并非入口路径配置错误、bundle损坏导致,只要修复ViewPropTypes的引用问题,该错误会自动消失。

结合你提供的依赖清单,项目中多个第三方依赖未同步完成0.69版本适配,仍在从react-native核心包引用ViewPropTypes,直接触发了初始化崩溃。


可行解决方案

方案1:入口全局兼容(最快生效,无需修改第三方依赖)

  1. 先安装官方要求的兼容依赖:
# npm
npm install deprecated-react-native-prop-types

# yarn
yarn add deprecated-react-native-prop-types
  1. 打开项目根目录的入口文件index.js,在所有其他import语句的最顶部加入以下兼容代码,将ViewPropTypes重新挂到RN核心对象上,供未适配的第三方包调用:
import { ViewPropTypes } from 'deprecated-react-native-prop-types';
import { LogBox } from 'react-native';

// 注入全局兼容
Object.defineProperty(require('react-native'), 'ViewPropTypes', {
  get: () => ViewPropTypes,
  configurable: true,
});

// 可选:忽略ViewPropTypes迁移相关警告
LogBox.ignoreLogs(['ViewPropTypes will be removed from React Native']);
  1. 重启metro打包服务并清除缓存:
npx react-native start --reset-cache

重新运行应用即可正常启动。


方案2:升级第三方依赖到适配版本

可以逐个升级存在兼容问题的依赖到已完成0.69适配的版本,从根源解决引用问题,已知你依赖中需要升级的包及最低适配版本如下:

  • @react-native-community/checkbox:升级到0.5.13及以上
  • react-native-progress:升级到5.0.1及以上
  • react-native-country-picker-modal:升级到2.0.1及以上
  • react-native-signature-canvas:升级到4.4.0及以上
  • react-native-pdf:升级到6.6.0及以上
  • react-native-radio-input:该包长期未维护,无适配版本,建议替换为维护活跃的同类组件如react-native-radio-buttons-group

升级操作步骤:

  1. 删除项目根目录下的node_modules文件夹、包管理锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml)
  2. 重新执行依赖安装命令
  3. iOS端重新执行pod install更新原生依赖,Android端直接清理构建缓存
  4. 带--reset-cache参数重启metro服务,重新构建应用即可。

方案3:用patch-package持久化修复无更新的依赖

如果部分依赖长期无维护、也没有替代方案,可以使用patch-package直接修改依赖内的引用逻辑,持久化修复问题:

  1. 安装patch-package到开发依赖:
npm install patch-package -D
  1. 打开node_modules下对应问题包的源码,将所有import { ViewPropTypes } from 'react-native'语句替换为:
import ViewPropTypes from 'deprecated-react-native-prop-types/DeprecatedViewPropTypes';
  1. 执行命令生成对应包的补丁,以修复react-native-radio-input为例:
npx patch-package react-native-radio-input
  1. 在package.json的scripts字段中添加postinstall钩子,保证后续安装依赖时自动应用补丁:
{
  "scripts": {
    "postinstall": "patch-package"
  }
}

注意事项

  • 所有修复操作完成后,必须清除metro缓存重启服务,否则旧的打包缓存会导致错误持续出现
  • 不要随意修改AppRegistry注册逻辑、调整入口文件路径,这类操作无法解决当前的初始化崩溃问题
  • 如果修复后仍出现相同报错,可以通过报错堆栈定位具体是哪个第三方包在引用核心包的ViewPropTypes,针对性处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:57:14