首页 > 解决方案 > Angular Fire 和 Firebase 模拟器 - 文档更新不起作用

问题描述

将 Angular Fire 和 Firebase 模拟器更新到最新版本后,更新文档不再有效。仍然可以毫无问题地创建新文档,但是 .update() 和 set() 不起作用。

我们的 Angular 应用程序有不同的环境。在本地环境(plain ng serve)中,应用程序应使用 Firebase Emulator Suite。如前所述,可以毫无问题地阅读和创建文档。

app.module.ts (providers) 中的输出配置如下所示:`
// Firebase AngularFireModule.initializeApp(environment.firebaseConfig), AngularFireStorageModule,

    // Translation
    HttpClientModule,
    TranslocoRootModule,
],
bootstrap: [AppComponent],
providers: [
    {
        provide: FIRESTORE_EMULATOR,
        useValue: !environment.emulator ? undefined : ['localhost', 8080],
    },
    {
        provide: FUNCTIONS_EMULATOR,
        useValue: !environment.emulator ? undefined : ['localhost', 5001],
    },
    AuthGuard,
    NavigationService,
],

}) 导出类 AppModule {}`

在开发者控制台中,您可以看到写入请求是向 localhost 发出的,但它一直处于挂起状态,并在 45 秒后被取消。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我们尝试了一切,但我们现在不知道该做什么了。请帮忙!谢谢!

标签: angularfirebasegoogle-cloud-firestoreangularfire2firebase-tools

解决方案


我能够通过降级firebase来解决同样的问题firebase@7.12.0

npm i firebase@7.12.0

app.module.ts我补充说:

import { SETTINGS } from '@angular/fire/firestore';

在您需要初始化的导入中AngularFireModule

// Firebase
    AngularFireModule.initializeApp(environment.firebaseConfig),

在提供者中:

providers: [
    ...
    {
        provide: SETTINGS,
        useValue: !environment.emulator
            ? undefined
            : { host: "localhost:8080", ssl: false },
    },

确保在环境文件中为本地开发设置了 emulator ( true) 属性(在我的例子中:)environment.emulator。我的 firebase 模拟器在 port 上运行8080

您还可以尝试删除模拟器缓存(包含.jar文件),因为如果您启动它们,它们将自动下载。


推荐阅读