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

React Native 0.64.2搭配Firebase 9.0.0-beta.8无法连接Cloud Firestore求助

解决方案

1. 版本兼容修复

你当前使用的Firebase 9.0.0-beta.8属于测试版本,WebChannel传输报错是该版本的已知React Native Android端兼容缺陷,优先处理版本问题:

  • 降级到8.10.0稳定版,或升级到9.1.0及以上正式版即可解决beta版本自带的适配问题
  • 避免使用beta版本用于开发,大量未修复的兼容问题会增加排查成本

2. 模拟器网络配置修正

Android模拟器默认的网络配置经常会出现连接云服务异常的问题,按以下步骤排查:

  • 进入模拟器设置→网络,关闭代理配置,避免Windows系统代理被模拟器自动继承导致连接拦截
  • 关闭模拟器后执行adb kill-server && adb start-server,再冷启动模拟器(不要用快照恢复启动,避免网络缓存问题)
  • 确认项目android/app/src/main/AndroidManifest.xml中已添加必要的网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3. Firestore初始化配置调整

你单独开启experimentalForceLongPolling无法在React Native环境生效,需要搭配禁用Fetch Stream配置,调整Firestore初始化代码:

import { initializeFirestore } from "firebase/firestore";

const db = initializeFirestore(app, {
  experimentalForceLongPolling: true,
  useFetchStreams: false,
});

4. 代码逻辑优化

现有代码中setDoc没有添加异常捕获,会触发未处理的Promise rejection警告,调整为async/await写法统一捕获异常:

const usersRef = collection(db, "users")

const onSignUp = async () => {
  if(!isSelectedSoft) return
  try {
    await createUserWithEmailAndPassword(auth, email, password)
    await setDoc(doc(usersRef, auth.currentUser.uid), {
        email, 
        pseudo,
        mood: "soft",
        gender,
        age,
        country
    })
  } catch (error) {
    console.log(error);
  }
};

5. 快速验证方案

优先使用实体Android设备连接调试,如果实体设备可以正常写入Firestore,即可确定是模拟器配置问题,无需额外排查项目代码和Firebase服务配置。

内容的提问来源于stack exchange,提问作者Dimitri Enj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:06:02