您的意思可能是 Cloud Firestore,因为 Firebase 仅针对移动开发而非 Web 具有离线持久性。
正如错误提示的那样,在导入/引用 Firestore 时,您应该首先调用 enablePersistance()。
我在 Angular 应用程序中使用它,并在我的 appModule 中调用它:
@NgModule({
declarations: [AppComponent, CardComponent],
imports: [
BrowserModule,
AppRoutingModule,
AngularFireModule,
AngularFirestoreModule.enablePersistence(), <--
AngularFireAuthModule,
AngularFirestoreModule,
HttpClientModule
],
providers: [{ provide: FirebaseOptionsToken, useValue: environment.firebaseConfig }],
bootstrap: [AppComponent],
})
export class AppModule {}
启用离线持久性后,Firestore 会将所有访问的文档缓存到定义的缓存限制(默认为 40 MB,但您可以更改此值)。
如果达到缓存限制,Firestore 将删除最旧的文档。
如果您想了解有关启用full offline CRUD operations for PWAs, have a look at here 的更多信息。
很酷的是,离线时所做的所有更改都将通过 Firestore 自动与服务器同步,开箱即用。
更新
如果您的应用处理敏感信息并且您想提供额外的安全性,那么您必须找到一种方法来解决 Firestore 的要求,愿意启用离线持久性作为第一种方法。
也许您应该考虑一下删除导入的 Firebase 模块然后使用 enablePersistence() 再次导入它的方法。
以 Node.js 为例:
var name = require.resolve('moduleName');
delete require.cache[name];