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

Expo 48升级后调用FireStore报Undefined is not a function错误求助

Expo 48 Hermes引擎下FireStore上传数据报“Undefined is not a function”的解决方案

核心问题分析

Expo 48默认启用Hermes引擎,你当前使用的Firebase 9.7.0版本可能与该引擎存在兼容性冲突,尤其在异步操作的错误处理逻辑中触发了未定义函数调用。

具体解决步骤

  • 升级Firebase依赖至兼容版本
    Expo 48适配的React Native 0.71.x需要搭配更新的Firebase版本,建议升级到9.22.0及以上:

    npm install firebase@^9.22.0
    # 或使用yarn
    yarn add firebase@^9.22.0
    
  • 排查FireStore上传代码的错误处理
    避免在catch块中调用错误对象的未确认方法,先打印完整错误信息定位问题:

    try {
      await firestore().collection('target-collection').add(uploadData);
    } catch (error) {
      // 打印完整错误信息,避免直接调用可能未定义的方法
      console.log('FireStore上传错误详情:', error);
      console.log('错误类型:', typeof error);
      console.log('错误栈:', error.stack);
    }
    
  • 确认Hermes配置正确性
    在app.json或app.config.js中检查Hermes启用配置,确保无冲突:

    {
      "expo": {
        "jsEngine": "hermes"
      }
    }
    
  • 清理缓存并重建项目
    升级后缓存可能导致依赖冲突,执行以下命令清理重建:

    npx expo start --clear
    rm -rf node_modules && npm install
    
  • 检查其他依赖的兼容性
    部分旧依赖可能与Expo 48不兼容:

    • react-native-elements可替换为@rneui/themed和@rneui/base
    • 确认expo-leaflet是否支持React Native 0.71.x,必要时升级或替换

临时替代方案

若上述步骤未解决问题,可在Expo 48中暂时切换回JSC引擎,修改app.json:

{
  "expo": {
    "jsEngine": "jsc"
  }
}

但长期建议适配Hermes以获取更好性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:23:30