Firebase手机号认证配置报错:firebase.app().options返回空对象{}
Expo项目下Firebase手机号认证配置异常
问题现象
- 完成Firebase手机号认证全流程配置后,运行时持续抛出认证相关错误,无法定位根因
- 代码中通过
console.log打印获取的firebaseConfig时,控制台输出为空对象{},未包含初始化阶段设置的Firebase应用参数 - 开发环节已完成初步核验:Firebase相关依赖导入正常、项目初始化流程符合官方规范,存在配套报错截图可辅助定位问题
涉及核心实现代码
import { FirebaseRecaptchaVerifierModal } from 'expo-firebase-recaptcha'; import firebase from '../database/firebase'; interface Props {} const PhoneAuth = (props: Props) => { const reCaptchaRef = React.useRef<any>(null); const [phoneNumber, setPhoneNumber] = React.useState<string>(''); const [verificationId, setVerificationId] = React.useState<string>(''); const [verificationCode, setVerificationCode] = React.useState<string>(''); // 读取Firebase配置的逻辑 const firebaseConfig = firebase.apps.length ? firebase.app().options : undefined; return ( <View style={styles.screen}> <FirebaseRecaptchaVerifierModal ref={reCaptchaRef} firebaseConfig={firebaseConfig} attemptInvisibleVerification={true} /> {/* 其余业务代码省略 */} ) }
常见问题排查方向
- 校验Firebase模块的导出逻辑:如果
../database/firebase文件未正确导出已初始化的Firebase SDK实例,而是导出了空配置、或未完成初始化的SDK对象,会直接导致firebase.apps.length判断逻辑失效,最终传入recaptcha组件的配置项为空 - 核验初始化执行时序:如果项目采用异步方式加载Firebase初始化参数(例如从远程拉取配置、读取加密存储的环境变量),需确认组件渲染时初始化流程已执行完成,避免在app实例未注册时读取配置项
- 检查配置项读取链路:如果初始化参数来自项目环境变量,需确认Expo项目的环境变量配置路径正确,不存在变量名不匹配、配置项未透传的问题,避免传给
initializeApp的参数全为undefined - 核对依赖版本兼容性:确认
expo-firebase-recaptcha的版本与项目使用的Firebase SDK版本匹配,不兼容的版本会出现无法正确读取传入配置的问题
内容的提问来源于stack exchange,提问作者nishi
相关产品推荐
相关产品推荐

