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

React Native安卓端Firestore无法连接(Web端正常)问题咨询

异常原因
  • 标准版Firestore v9默认使用gRPC协议进行通信,React Native安卓环境下(包括Expo场景)对gRPC长连接握手的兼容性较差,极易出现10秒超时的问题,而你使用的firebase/firestore/lite版本默认走REST协议通信,因此不会触发该问题。
  • 你当前使用的firebase 9.1.3属于v9早期版本,本身存在多个React Native安卓端的gRPC适配bug,未进行后续修复。
  • 标准版Firestore默认开启离线持久化,若初始化时本地存在异常缓存,会优先进入离线模式,直接返回空数据不会发起网络请求。
解决方案

1. 强制禁用gRPC,使用长轮询HTTP协议通信

替换原有firebase配置文件中初始化Firestore的代码,使用initializeFirestore方法替代getFirestore,开启强制长轮询配置:

import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { initializeFirestore } from "firebase/firestore"; // 替换原有导入

const firebaseConfig = {
        // 原有配置不变
};

const app = initializeApp(firebaseConfig);
const auth = getAuth(app)
// 替换原有getFirestore(app)代码
const db = initializeFirestore(app, {
  experimentalForceLongPolling: true, // 核心配置,强制走HTTP长轮询
});

export {auth, db}

90%以上的同场景问题添加该配置后即可正常使用。

2. 排查缓存问题

如果添加上述配置后仍然异常,可临时关闭离线持久化验证是否为缓存冲突导致,修改初始化配置如下:

const db = initializeFirestore(app, {
  experimentalForceLongPolling: true,
  persistence: false // 临时关闭离线持久化
});

验证正常后可根据业务需求决定是否重新开启持久化。

3. 升级Firebase依赖版本

你当前使用的9.1.3版本存在较多已知兼容性问题,可将firebase版本升级到v9系列的最新稳定版(如9.23.0),避免原生适配bug的影响,不要直接跨大版本升级到v10,防止引入其他兼容性问题。

4. 检查安卓网络权限

确认安卓项目android/app/src/main/AndroidManifest.xml中已添加网络权限配置:

<uses-permission android:name="android.permission.INTERNET" />

内容的提问来源于stack exchange,提问作者Rotchot Scharp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:27:07