TypeError:firebase.messaging不是node.js中的函数

时间:2017-06-01 13:29:05

标签: javascript node.js firebase firebase-cloud-messaging

尝试使用firebase模块在node.js中获取FCM消息时,发生以下错误“TypeError:firebase.messaging不是函数”。

var firebase = require("firebase");

firebase.initializeApp({
    apiKey: "xxxxxxx",
    authDomain: "xxxxxxx",
    databaseURL: "xxxxxxx",
    projectId: "xxxxxxx",
    storageBucket: "xxxxxxx",
    messagingSenderId: "xxxxxxx"
});

const messaging = firebase.messaging();

如何纠正此错误以及如何使用firebase模块来提取消息?

5 个答案:

答案 0 :(得分:2)

Firebase的文档未明确说明基于当前环境可用的功能有所不同。 firebase.messaging不可用于Node.js客户端,但可从firebase-admin包中获得。但是,这个软件包单独为firebase.messaging提供了一组不同的功能。

您可以在Firebase参考文档中根据您的环境查看可用的内容。特别针对您的情况Node.js (Client)部分。

答案 1 :(得分:1)

您尝试使用的条件仅适用于浏览器:

您必须要求firebase-messaging,请查看此完整示例,它将指导您https://github.com/firebase/quickstart-js/tree/master/messaging

对于nodeJS实现,您必须使用admin.messaging

https://firebase.google.com/docs/reference/admin/node/admin.messaging

// Get the Messaging service for the default app
var defaultMessaging = admin.messaging();

答案 2 :(得分:1)

您还必须导入“ @ firebase / messaging”才能使其正常工作。

从“ firebase / app”导入*作为firebase; 导入'@ firebase / messaging';

答案 3 :(得分:0)

对于react-native-firebase version 5.x.x and 6.x.x

import firebase from '@react-native-firebase/app'
import '@react-native-firebase/messaging'

例如get token

const fcmToken = await firebase.messaging().getToken();
console.log(fcmToken)

答案 4 :(得分:0)

在我的情况下,我仅以

的形式导入Firebase
import '@firebase/app'

代替

import * as firebase from '@firebase/app'

格式化后,我能够从firebase.firebase.messaging()访问消息