firebase firestore 离线持久化 FirebaseError
Posted
技术标签:
【中文标题】firebase firestore 离线持久化 FirebaseError【英文标题】:firebase firestore offline persistence FirebaseError 【发布时间】:2021-10-27 17:40:50 【问题描述】:我搜索了几个小时来实现 Firestore 离线持久性,因为它对我的应用程序运行至关重要。我在我的应用程序中处理多个聊天,每次再次下载数据都是一个致命错误。
这是我的代码示例,它是第一个被调用的根 App.js 文件:
....
//imports related to firebase
import * as firebase from "firebase";
import ApiKeys from "./constants/ApiKeys";
export default function App()
//firebase project initialisation
if (!firebase.apps.length)
firebase.initializeApp(ApiKeys);
var db = firebase.firestore();
db.settings( experimentalForceLongPolling: true );
console.log("DB INITIALISED");
db.enablePersistence() //HERE IS THE PROBLEM
.catch((err) =>
if (err.code == 'failed-precondition')
// Multiple tabs open, persistence can only be enabled
// in one tab at a a time.
// ...
else if (err.code == 'unimplemented')
// The current browser does not support all of the
// features required to enable persistence
// ...
)
;.....
API 密钥如下所示:
const firebaseConfig =
apiKey: "***",
authDomain: "***",
databaseURL: "https://***",
projectId: "***",
storageBucket: "***",
messagingSenderId: "***",
appId: "***",
measurementId: "***"
;
export default firebaseConfig;
我收到以下无法解决的错误:
FirebaseError:您正在使用 Firestore 的仅内存版本。持久性支持只能通过 @firebase/firestore 包或 firebase-firestore.js 构建获得。
我已经安装了完整的“firebase”包,并且还可以访问@firebase/firestore,我已经检查过了,我实现了它与官方文档中的相同。一切正常,但是当我想启用持久性时...它会因上述错误而崩溃。
我现在能做什么?我错过了另一个包裹,我做错了什么吗?
作为旁注,身份验证持久性在我的应用程序中完美运行,只是 Firestore 持久性失败了。
当前使用 firebase SDK 8.2.3
【问题讨论】:
【参考方案1】:我使用 Expo 开发了我的应用程序,并被指向 expo-firestore-offline-persistence。我注意到他们在他们的页面上谈论了 react-native-firebase
以在 RN 上启用持久性 - 尽管这似乎需要从 Expo 中弹出。
这似乎是 RN 平台上 polyfill 的问题。换句话说,Firestore 所需的 javascript 并不具备 React Native 平台上所需的一切——这是普通浏览器所具备的。因此,“修复”是利用像 react-native-firebase
或 expo-firestore-offline-persistence
这样的组件,为您提供原生的额外功能。
【讨论】:
问题是我已经退出了博览会,但无论如何尝试了expo-firestore-offline-persistence
,它抛出了与上面相同的错误。当我使用react-native-firebase
时,我是否需要重新构建我的代码,因为它现在已经实现了,或者编码是否相同?
JavaScript SDK for Firestore 中的离线持久性仅在浏览器环境中受支持。因此,除非有 JavaScript SDK 的插入式 polyfill(我对此表示怀疑),否则您必须切换到包含 Firebase 原生 SDK 的 React Native 库,例如 Reach Native Firebase 确实,它还记录了如何使用 @987654323 @.
@FrankvanPuffelen - 你所说的 polyfill 就是我在回复中提到的 :) github.com/nandorojo/expo-firestore-offline-persistence/blob/…
不错!没有意识到这是一个下降。?以上是关于firebase firestore 离线持久化 FirebaseError的主要内容,如果未能解决你的问题,请参考以下文章
使用 Firebase Storage 和 Firebase Firestore 创建离线第一个应用程序的最佳方法是啥? #AskFirebase