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

React Native Expo Go运行报错: firebase is undefined 如何解决?

问题排查与解决方案

报错根因

你本地安装的是9.x及以上版本的Firebase,该版本默认使用模块化API,不再支持旧版本的命名空间默认导入语法,所以import firebase from 'firebase/app'导入的firebase变量为undefined,读取firebase.apps时就会触发该报错。

解决方案

方案1:适配新版Firebase模块化API(推荐)

直接替换原有代码为符合新版Firebase规范的写法即可:

// 改用模块化API导入
import { initializeApp, getApps } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import Constants from 'expo-constants';

const firebaseConfig = {
  apiKey: Constants.manifest.extra.apiKey,
  authDomain: Constants.manifest.extra.authDomain,
  projectId: Constants.manifest.extra.projectId,
  storageBucket: Constants.manifest.extra.storageBucket,
  messagingSenderId: Constants.manifest.extra.messagingSenderId,
  appId: Constants.manifest.extra.appId,
  measurementId: Constants.manifest.extra.measurementId
};

let Firebase, auth;

// 用getApps()方法替代原有的firebase.apps属性
if (getApps().length === 0) {
  Firebase = initializeApp(firebaseConfig);
}
auth = getAuth(Firebase);

// 可按需导出你需要用到的服务实例
export { auth };
export default Firebase;

后续用到Firebase其他服务(如Firestore、Storage)时,也统一使用模块化导入语法即可,例如import { getFirestore } from 'firebase/firestore'。

方案2:降级Firebase到8.x版本

如果不想修改原有代码逻辑,可直接将Firebase版本降级到最后一个支持命名空间导入的8.x版本:

# npm用户执行
npm install firebase@8.10.0

# yarn用户执行
yarn add firebase@8.10.0

降级完成后原有代码无需改动即可正常运行。

额外排查建议

  • 确认你的app.json/app.config.js中已经正确配置了extra字段下的所有Firebase配置项,避免配置读取失败引发后续异常
  • 代码或依赖修改完成后,清除Expo Go缓存、重启开发服务器后重新加载应用,避免旧缓存导致报错依旧存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:54:03