如何在@angular/fire 中启用 experimentalForceLongPolling

How to enable experimentalForceLongPolling in @angular/fire

Cypress 和 Firebase 存在问题,根据我在这里所做的一些研究,似乎 Cypress 拦截了所有网络请求,并且由于 firebase 的工作方式,它会在同一请求上发出多个值(它应该注意这只在使用模拟器时发生)赛普拉斯代码没有设置来处理这个所以它只发出第一个值。

似乎公认的解决方案是在 firebase 设置中启用 'experimentalForceLongPolling',但是我不确定如何在 @angular/fire 中执行此操作,它说已经使用不同的设置调用了.

我试过将它作为 provideFirebaseApp 回调中返回的 initializeApp 方法的参数,但没有任何反应。

@angular/fire 提供了一个名为 'initalizeFirestore' 的方法,它接受应用程序的一个实例和一个参数,该对象似乎允许您设置 'experimentalForceLongPolling' 但是在使用时它抛出一个错误,指出 'initialize app has been called with different settings' 在我们提供的 firebase 和 Firestore 的根模块中是有意义的。但是,您不能在没有应用程序实例的情况下调用此方法,因此它是一个陷阱 22,您无法初始化应用程序,因为您需要注入的数据库,并且您无法调用该方法,因为已经调用了初始化应用程序。

如何通过库启用此设置?

谢谢。

我认为这会解决您的问题,因为它已经解决了我的问题。 将此添加到您配置 firebase 和本地模拟器内容的 app.module.ts 文件中。

providers: [
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
    {
      provide: USE_FIRESTORE_SETTINGS,
      useValue: { experimentalForceLongPolling: true },
    },
    {
      provide: USE_AUTH_EMULATOR,
      useValue: environment.useEmulators
        ? ['http://localhost:9099']
        : undefined,
    },