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

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);
  }
};

异常网络请求截图

网络面板大量200状态请求截图


排查过程

  1. 项目使用.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
  1. 原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,
});
  1. 将Firebase配置直接硬编码写入初始化文件后,问题立刻消失,硬编码配置如下:
const firebaseConfig = {
  apiKey:'xxx',
  authDomain:'xxx',
  projectId:'xxx',
  storageBucket:'xxx',
  messagingSenderId:'xxx',
  appId:'xxx',
  measurementId:'xxx',
};
  1. 调用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:09:20