Expo项目Web端Constants.manifest对象为空导致Firebase Google Auth初始化失效问题排查求助
解决Expo Web端Constants.manifest为空导致Firebase Auth初始化失败的问题
我之前也碰到过完全一样的坑!核心原因是Expo在Web环境下的配置获取逻辑已经更新了——自从Expo SDK 44+版本开始,Web端不再支持Constants.manifest,这就是你现在拿不到环境变量的根源。
具体解决方案步骤:
- 替换
Constants.manifest为Constants.expoConfig
Expo官方现在推荐用Constants.expoConfig来跨平台获取配置,它在移动端和Web端都能正常读取到app.config.js里的extra字段。直接修改你的firebase.ts代码:
修改后的firebase.ts:
import { initializeApp } from "firebase/app"; import "firebase/auth"; import Constants from "expo-constants"; // Initialize Firebase console.log("=======>", Constants.expoConfig); // 改为打印expoConfig验证 const firebaseConfig = { apiKey: Constants.expoConfig?.extra?.apiKey, authDomain: Constants.expoConfig?.extra?.authDomain, projectId: Constants.expoConfig?.extra?.projectId, storageBucket: Constants.expoConfig?.extra?.storageBucket, messagingSenderId: Constants.expoConfig?.extra?.messagingSenderId, appId: Constants.expoConfig?.extra?.appId, }; const Firebase = initializeApp(firebaseConfig); export default Firebase;
验证环境变量注入是否正确
确认你的.env文件变量名和app.config.js里的process.env.XXX完全匹配,比如.env里是API_KEY=xxx,app.config.js里就要对应写apiKey: process.env.API_KEY,大小写和名称都不能出错。清理缓存重启项目
旧缓存可能导致配置不更新,执行命令强制清理并重启:expo r -c
补充说明
之前你的项目能正常运行,大概率是因为当时用的是旧版Expo SDK,Web端还兼容Constants.manifest;但升级SDK后,Web端的配置获取逻辑统一为expoConfig,旧的manifest就会返回空对象了。
内容的提问来源于stack exchange,提问作者ghostgarrix
相关产品推荐
相关产品推荐

