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

升级至react-native 59后出现HostObject::set异常求助

我之前升级到React Native 0.59版本时也碰到过一模一样的问题!折腾了好一阵才找到几个有效的解决方向,分享给你试试:

可能的解决方案

1. 检查Babel插件配置,尤其是babel-plugin-module-resolver

React Native 0.59开始对模块解析逻辑做了调整,如果你的.babelrc或babel.config.js里使用了module-resolver插件,要确保配置没有冲突:

  • 确认root、alias和extensions的设置符合RN59的要求,比如:
{
  "plugins": [
    ["module-resolver", {
      "root": ["./src"],
      "alias": {
        "@": "./src"
      },
      "extensions": [".js", ".jsx", ".json", ".native.js"]
    }]
  ]
}
  • 避免在自定义Babel插件中直接修改NativeModules对象,RN59对这个对象的读写权限做了更严格的限制。

2. 排查未适配的第三方依赖

有些老的原生模块或JS库还在尝试直接给NativeModules添加属性,这在RN59里会被禁止:

  • 先注释掉近期新增的依赖,逐个排查找出问题库
  • 尝试将问题库升级到适配RN59的版本,或者替换为功能类似的替代库
    我当时就是因为一个旧的图片处理库在操作NativeModules,替换成新库后问题就解决了。

3. 清理Metro缓存并重启服务

缓存导致的兼容性问题很常见,执行以下命令清理缓存后重试:

rm -rf node_modules && npm install
npm start -- --reset-cache

4. 确保babel-preset-react-native版本匹配

RN59需要搭配babel-preset-react-native@^5.0.0版本:

  • 检查package.json里的依赖版本,不对的话更新:
npm install babel-preset-react-native@^5.0.0 --save-dev
  • 确认babel配置中正确使用了这个preset:
{
  "presets": ["react-native"]
}

如果以上方法都没用,建议创建一个全新的RN59项目,对比两个项目的babel配置、metro配置和package.json依赖,逐步调整自己的项目配置,找出差异点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:18:14