为啥调用firebase函数时会出现FCM错误

Posted

技术标签:

【中文标题】为啥调用firebase函数时会出现FCM错误【英文标题】: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 【参考方案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'

现在一切正常。

【讨论】:

以上是关于为啥调用firebase函数时会出现FCM错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在尝试调用采用动态参数的基本构造函数/方法时会出现此编译错误?

为啥在此代码中调用虚拟方法时会出现分段错误?

Firebase FCM - 为啥会收到:有效负载错误,无效的“android”(或“apns”)属性

为啥我在 .bashrc 中使用 `uname` 时会出现错误?

Firebase FCM 推送,出现错误缺少注册 |安卓

为啥我在函数内部调用时会收到“错误:无效的挂钩调用”?