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

为何Expo应用在Expo Go可运行,开发构建版却崩溃?

问题原因及解决方案

核心原因

报错null is not an object (evaluating '_ReanimatedModule.default.createNode')本质是react-native-reanimated模块未正确集成或版本不兼容。开发构建版作为自定义客户端,不像Expo Go预打包了适配好的依赖,因此会出现Expo Go正常但开发构建版崩溃的情况。"main has not been registered"是该错误引发的连锁问题,解决核心错误后会自动消失。

具体排查方向

  • 版本兼容性冲突
    当前项目的React Native版本与react-native-reanimated版本不匹配。你之前通过降级RN到0.69.6解决过类似问题,说明当前RN版本和reanimated版本存在适配问题,需要确认两者版本兼容。

  • reanimated配置缺失
    开发构建版需要手动确保reanimated的Babel配置正确:

    • 检查babel.config.js中是否添加了react-native-reanimated/plugin插件,且该插件必须放在所有插件的最后一位
    • 示例配置:
      module.exports = function(api) {
        api.cache(true);
        return {
          presets: ['babel-preset-expo'],
          plugins: [
            // 其他插件
            'react-native-reanimated/plugin' // 必须放在最后
          ],
        };
      };
      
  • 缓存残留问题
    Metro或EAS构建缓存中的旧依赖残留会引发错误:

    • 清除Metro缓存:执行npx expo start --clear
    • 清除EAS构建缓存:运行eas build --clear-cache,或在EAS控制台手动清除构建缓存
  • 原生依赖未正确链接
    虽然Expo通常会自动链接依赖,但某些情况下reanimated的原生代码未被正确集成到开发构建版中。尝试重新构建开发客户端:

    eas build --profile development
    

解决步骤

  1. 确认react-native-reanimated版本与当前React Native版本兼容,若不兼容则降级或升级reanimated到适配版本
  2. 修正babel.config.js中的reanimated插件配置,确保其在插件列表末尾
  3. 清除所有缓存后重新启动Metro服务
  4. 重新生成开发构建版并测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:00:55