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

React Native构建失败:Expo集成Firebase项目模拟器运行报错求助

问题根因

该报错是Expo集成Firebase场景下的典型兼容问题,核心诱因有三类:

  • Firebase JS SDK版本与当前Expo SDK版本不匹配:v10及以上版本的Firebase采用ESM/CJS混合模块格式,Expo默认的Metro打包配置未做对应适配,会出现模块解析失败
  • 错误安装了需要原生编译的react-native-firebase系列包:模拟器运行默认使用的Expo Go客户端不支持未经过自定义构建的原生模块,会直接抛出模块不存在/属性读取失败的错误
  • 打包缓存残留:仅重装依赖不会清除Metro的历史打包缓存,错误的模块映射关系会被持续复用
修复步骤

按顺序操作,每步完成后可直接验证问题是否解决,无需执行全部步骤:

  1. 校正依赖包
    先卸载可能误装的原生Firebase包:
    yarn remove @react-native-firebase/app @react-native-firebase/auth @react-native-firebase/firestore
    
    安装版本适配的纯JS Firebase包:Expo SDK 49/50 对应安装firebase@^10.7.0即可;如果是Expo SDK 48及更低版本,固定安装firebase@9.23.0,高版本会存在API兼容问题。安装命令参考:
    yarn add firebase@^10.7.0
    
  2. 修正Metro打包配置
    在项目根目录找到或新建metro.config.js文件,写入如下配置,解决Firebase模块格式解析问题:
    const { getDefaultConfig } = require('expo/metro-config');
    const defaultConfig = getDefaultConfig(__dirname);
    
    defaultConfig.resolver.sourceExts.push('cjs', 'mjs');
    defaultConfig.resolver.assetExts.push('cjs');
    
    module.exports = defaultConfig;
    
  3. 全量清缓存重启
    不要直接执行expo start,使用带缓存清理参数的命令启动服务:
    expo start -c
    # 或使用yarn启动时执行
    yarn start --reset-cache
    

兜底方案:如果以上步骤操作后问题仍存在,直接删除项目根目录下的node_modules文件夹和yarn.lock文件,重新执行yarn install后再用清缓存命令启动即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:42:58