React Native构建失败:Expo集成Firebase项目模拟器运行报错求助
问题根因
该报错是Expo集成Firebase场景下的典型兼容问题,核心诱因有三类:
- Firebase JS SDK版本与当前Expo SDK版本不匹配:v10及以上版本的Firebase采用ESM/CJS混合模块格式,Expo默认的Metro打包配置未做对应适配,会出现模块解析失败
- 错误安装了需要原生编译的
react-native-firebase系列包:模拟器运行默认使用的Expo Go客户端不支持未经过自定义构建的原生模块,会直接抛出模块不存在/属性读取失败的错误 - 打包缓存残留:仅重装依赖不会清除Metro的历史打包缓存,错误的模块映射关系会被持续复用
修复步骤
按顺序操作,每步完成后可直接验证问题是否解决,无需执行全部步骤:
- 校正依赖包
先卸载可能误装的原生Firebase包:
安装版本适配的纯JS Firebase包:Expo SDK 49/50 对应安装yarn remove @react-native-firebase/app @react-native-firebase/auth @react-native-firebase/firestorefirebase@^10.7.0即可;如果是Expo SDK 48及更低版本,固定安装firebase@9.23.0,高版本会存在API兼容问题。安装命令参考:yarn add firebase@^10.7.0 - 修正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; - 全量清缓存重启
不要直接执行expo start,使用带缓存清理参数的命令启动服务:expo start -c # 或使用yarn启动时执行 yarn start --reset-cache
兜底方案:如果以上步骤操作后问题仍存在,直接删除项目根目录下的
node_modules文件夹和yarn.lock文件,重新执行yarn install后再用清缓存命令启动即可。
内容的提问来源于stack exchange,提问作者Adii_Mathur
相关产品推荐
相关产品推荐

