Expo + firebase@9.0.1/9.0.0: @firebase/firestore:, Firestore (9.0.0): 无法到达 Cloud Firestore 后端
Posted
技术标签:
【中文标题】Expo + firebase@9.0.1/9.0.0: @firebase/firestore:, Firestore (9.0.0): 无法到达 Cloud Firestore 后端【英文标题】:Expo + firebase@9.0.1/9.0.0: @firebase/firestore:, Firestore (9.0.0): Could not reach Cloud Firestore backend 【发布时间】:2021-11-05 04:51:58 【问题描述】:我刚刚将我的 Expo 移动应用程序从 firebase@9.0.0-beta.7 更新到 firebase@9.0.1 并遇到以下错误:@firebase/firestore: Firestore (9.0.0): Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds
。
我正在使用 android studio 模拟器在 Expo Go 中运行移动应用程序。
在应用程序中,身份验证工作正常,因为我可以登录和注销用户,但是当我尝试使用 Firestore 执行某些操作时,出现以下错误:Failed to get document because the client is offline.
例如,这发生在基本的 getDoc() 函数中
const dbRef = doc(db, 'exampleColletion', 'id');
await getDoc(dbRef).then(document =>
const information = document.data();
if (information !== undefined)
eventsRetreived(information);
).catch((err) =>
eventsRetreived(err);
console.log(err.message)
)
我已经通过使用firebase@9.0.1
或firebase@9.0.0
进行了一些测试,但在这两种情况下我都面临同样的问题,但在firebase@9.0.0-beta.7
中一切正常(而且我没有更改任何代码,只更改版本火力基地)。
如果需要更多代码或信息,请告诉我需要添加什么,我会根据需要编辑这篇文章。
编辑 找到了相关的 github 问题,但即使已关闭,我在测试 firebase@9.0.2 后仍然面临该问题https://github.com/firebase/firebase-js-sdk/issues/5402
EDIT2
似乎问题出现在 Expo v. 42 中。目前 Expo 支持默认兼容版本的 Firebase,因此目前的解决方案是使用 firebase@9.0.0-beta.7
或 Expo 支持并通过 expo install firebase
安装的兼容版本/p>
【问题讨论】:
您是否尝试过使用Node.js SDK?您仍然会出现这些错误吗? @FaridShumbar 我有另一个 Expo 项目,其中包含使用 Firebase Admin Node.js SDK 的 Firebase 函数,它工作正常。该项目也使用firebase@9.0.1
,调用Firestore时没有问题。
但是 .. 该项目使用 expo-web 并在 web 环境中使用 firebase@9.01
(但仍以与移动项目相同的方式设置配置)。我不知道这是否会影响事情,只是提一下。
我在使用 Expo v. 42 时遇到了同样的问题。
@MaxFahl 很有趣。我们可能需要等到 expo v. 43 发布,在那里可以使用模块化 firebase 并且在等待使用“firebase@9.0.0-beta.7”或expo install firebase
提供的兼容版本时
【参考方案1】:
我可以使用这个设置让它工作:
initializeFirestore(firebaseInstance.current,
// @ts-ignore
useFetchStreams: false,
cacheSizeBytes: 100000000,
)
似乎 ios 不想很好地使用 Fetch API,使用 useFetchStreams
回退到使用 XMLHttpRequest
代替,目前这似乎对我有用。我在火力基地9.0.2
。
【讨论】:
以上是关于Expo + firebase@9.0.1/9.0.0: @firebase/firestore:, Firestore (9.0.0): 无法到达 Cloud Firestore 后端的主要内容,如果未能解决你的问题,请参考以下文章
Expo大作战(二十三)--expo中expo kit 高级属性(没干货)
Expo SDK 需要 Expo 才能运行。似乎本机 Expo 模块不可用,并且此代码未在 Expo 上运行。我想生成apk
Expo大作战(二十七)--expo sdk api之Util(expo自带工具类),tackSnapshotAsync,Svg,SQLite
react-native / expo / expo-google-app-auth vs expo-google-sign-in