Firebase部署后无法连接Cloud Firestore问题求助
解决Firebase生产部署后无法连接Firestore/Auth的问题
核心问题很明确:你的代码里还保留了连接本地模拟器的代码,部署到生产环境后,应用仍在尝试访问本地的模拟器服务(localhost:9099、0.0.0.0:8080),而生产环境无法访问这些本地端口,直接导致Firebase相关操作全部失效,同时页面底部显示的Running in emulator mode. Do not use with production credentials.也验证了这一点。
解决方案
1. 直接删除模拟器连接代码
把firebase.js里这两行代码删掉即可:
connectAuthEmulator(auth, "http://localhost:9099"); connectFirestoreEmulator(db,'0.0.0.0', 8080)
2. 用环境变量区分开发/生产环境(推荐)
为了避免每次部署都手动删除代码,可以通过环境变量自动控制模拟器连接逻辑,示例如下:
const firebaseConfig = { apiKey: ..., authDomain: ..., ... measurementId: ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); const db = initializeFirestore(app, { experimentalForceLongPolling: true, useFetchStreams: false, }) const auth = getAuth(app); // 仅在开发环境启用模拟器连接 if (import.meta.env.MODE === 'development') { // Vite项目用法 // if (process.env.NODE_ENV === 'development') { // Create React App项目用法 connectAuthEmulator(auth, "http://localhost:9099"); connectFirestoreEmulator(db,'0.0.0.0', 8080); } export { auth, db, onAuthStateChanged }; export default app;
补充说明
你之前尝试的修改Firestore初始化方式、放宽Firestore规则这两个操作,都没有触及问题本质——当前故障和初始化配置、数据库权限无关,完全是因为生产环境下错误连接了本地模拟器导致的。
内容的提问来源于stack exchange,提问作者Jae Lee
相关产品推荐
相关产品推荐

