【问题标题】:Why does an FCM error appear when calling a firebase function为什么调用firebase函数时会出现FCM错误
【发布时间】:2020-08-21 18:35:10
【问题描述】:

所以我像这样通过 AngularFire 调用 firebase 函数:

const response = await this.aFunctions.httpsCallable<void, ResponseType>('funcName')().toPromise();

这在部署到 firebase(托管)时有效,但在本地环境中(使用 ionic serve),它会抛出此错误:

ERROR Error: Uncaught (in promise): FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker for scope ('http://localhost:8100/firebase-cloud-messaging-push-scope') with script ('http://localhost:8100/firebase-messaging-sw.js'): A bad HTTP response code (404) was received when fetching the script. (messaging/failed-service-worker-registration).
FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker for scope ('http://localhost:8100/firebase-cloud-messaging-push-scope') with script ('http://localhost:8100/firebase-messaging-sw.js'): A bad HTTP response code (404) was received when fetching the script. (messaging/failed-service-worker-registration).

我在这个项目中没有以任何方式使用 FCM。你知道为什么会发生这种情况吗?

【问题讨论】:

  • 该错误看起来与您显示的代码无关。您确定它会影响代码的工作方式吗?
  • 它确实在调用任何函数时出现。没关系。我不确定是什么原因造成的,但我很肯定这个项目没有涉及 FCM。 @DougStevenson
  • 如果代码正常工作,我会忽略它。
  • 问题是它不能正常工作。其他具有类似设置(离子/角度+ firebase)的项目不会给我这个错误,所以我不能忽略它。它仅在部署到 firebase 时才有效。否则调用函数会引发此错误。 @DougStevenson
  • 如果您有错误报告,那么我建议您联系 Firebase 支持以寻求帮助。这里没有足够的信息可以使用。 support.google.com/firebase/contact/support

标签: angular firebase ionic-framework google-cloud-functions angularfire


【解决方案1】:

就我而言,我通过注释掉messagingSenderId 解决了这个问题。
火力基地:{
   apiKey: 'XXXXX',
   authDomain: 'XXXXX',
   databaseURL: 'XXXXX',
   projectId: 'XXXXX',
   storageBucket: 'XXXXX',
   // messingSenderId: 'XXXXX',
   appId:“XXXXX”
}

我的情况有点不同和奇怪。我需要将 Angular 项目部署到 Firebase 托管。

代码:
  const ob = this.functions.httpsCallable('api-name')({});
  ob.subscribe((data)=>{//在这里做点什么});

错误:
  FirebaseError:消息传递:我们无法注册默认服务工作者......

环境:

  • 本地:好的

  • firebase 托管默认域(projectName.web.app):错误

  • firebase 托管默认域(projectName.firebaseapp.com):好的

我不知道原因,但希望它可以帮助你和其他有类似问题的人。

【讨论】:

    【解决方案2】:

    好的,我通过解决在整个应用中导入 Firebase 的问题来修复它。

    // 此导入加载 firebase 命名空间及其所有类型信息。 import firebase from 'firebase/app';

    // 这些导入将单个服务加载到 firebase 命名空间中。 import 'firebase/auth'; import 'firebase/database';

    我能够删除 firebase-messaging-sw.js 文件,并且所有 onCall 功能都正常工作。

    我以前混合过:

    import firebase from 'firebase;

    import * as firebase from 'firebase'

    标准化一切以从“firebase/app”+您需要的后续包导入 firebase import 'firebase/functions'

    现在一切正常。

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 2011-05-18
      相关资源
      最近更新 更多