为啥调用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”)属性