Firestore无法创建文档 持续返回HTTP 200引发网络洪泛问题
Firestore写入文档触发大量200请求故障排查
故障现象
- Firebase认证流程可正常执行,但新用户注册后对应
users集合的文档写入逻辑无响应 - 服务端持续返回HTTP 200状态码,短时间内产生大量请求造成网络洪泛
- 尝试删除整个Firebase项目从零重建、对照官方文档核对业务代码后,问题仍未解决,浏览器控制台默认无任何报错信息。
业务代码片段
注册表单提交逻辑(SignUp.jsx)
const handleSubmit = async (e) => { e.preventDefault(); if (password !== passwordConfirm) { return setError('Passwords do not match'); } try { setError(''); setLoading(true); const user = await register(email, password); const uid = user.uid; console.log(uid); await addUser(user.email); console.log('If I see this all went processed'); navigate('/tutorials'); } catch (error) { console.log(error); setError('Failed to create an account'); setError(error.message); } setLoading(false); };
Firestore文档写入逻辑(addUser方法)
try { const docRef = await addDoc(collection(db, 'users'), { email, htmlCode: '', cssCode: '', jsCode: '', }); console.log('Document written with ID: ', docRef.id); } catch (e) { console.error('Error adding document: ', e); } };
异常网络请求截图

排查过程
- 项目使用
.env.local存储Firebase敏感配置,配置项如下:
VITE_FIREBASE_API_KEY=xxx VITE_AUTH_FIREBASE_AUTH_DOMAIN=xxx VITE_FIREBASE_PROJECT_ID=xxx VITE_FIREBASE_STORAGE_BUCKET=xxx VITE_FIREBASE_MESSAGING_SENDER_ID=xxx VITE_FIREBASE_APP_ID=xxx VITE_FIREBASE_MEASUREMENT_ID=xxx
- 原Firebase初始化代码如下:
// init app const firebaseConfig = initializeApp({ apiKey: import.meta.env.VITE_FIREBASE_API_KEY, authDomain: import.meta.VITE_AUTH_FIREBASE_AUTH_DOMAIN, projectId: import.meta.VITE_FIREBASE_PROJECT_ID, storageBucket: import.meta.VITE_FIREBASE_STORAGE_BUCKET, messagingSenderId: import.meta.VITE_FIREBASE_MESSAGING_SENDER_ID, appId: import.meta.VITE_FIREBASE_APP_ID, measurementId: import.meta.VITE_FIREBASE_MEASUREMENT_ID, });
- 将Firebase配置直接硬编码写入初始化文件后,问题立刻消失,硬编码配置如下:
const firebaseConfig = { apiKey:'xxx', authDomain:'xxx', projectId:'xxx', storageBucket:'xxx', messagingSenderId:'xxx', appId:'xxx', measurementId:'xxx', };
- 调用
setLogLevel('debug')开启Firebase调试日志后,捕获到明确报错:The database (default) does not exist for project undefined
故障根本原因
初始化代码读取环境变量时存在两处错误,导致Firestore SDK无法获取有效配置,触发内置的无限重试逻辑:
- 除
apiKey字段外,其余所有配置项读取环境变量时均遗漏了.env层级:代码写为import.meta.VITE_xxx,Vite框架中正确的环境变量读取路径应为import.meta.env.VITE_xxx,这部分配置的读取结果全部为undefined .env.local中定义的authDomain变量名存在冗余前缀:变量名写为VITE_AUTH_FIREBASE_AUTH_DOMAIN,但代码读取的键名是VITE_FIREBASE_AUTH_DOMAIN,即便补全.env层级也无法读取到正确值。
为什么Firebase认证功能正常,只有Firestore逻辑异常?
Firebase Auth模块初始化仅需有效apiKey即可对接后端服务,而Firestore必须拿到正确的projectId才能定位到对应项目的数据库实例。当projectId为undefined时,Firestore SDK不会抛出常规的显性报错,只会持续发起重试请求,最终表现为网络面板出现大量200状态的无效请求、文档写入逻辑挂起无响应,和观测到的现象完全吻合。
内容的提问来源于stack exchange,提问作者Marco Stevanella
相关产品推荐
相关产品推荐

