【问题标题】:TypeError: firebase.messaging is not a function in node.jsTypeError:firebase.messaging 不是 node.js 中的函数
【发布时间】:2017-11-02 16:23:23
【问题描述】:

在尝试使用 firebase 模块在 node.js 中获取 FCM 消息时,出现以下错误“TypeError: firebase.messaging is not a function”。

var firebase = require("firebase");

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

const messaging = firebase.messaging();

如何纠正这个错误以及如何使用firebase模块拉消息??

【问题讨论】:

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


    【解决方案1】:

    在我的情况下,我只是将 firebase 导入为

    import '@firebase/app'
    

    而不是

    import * as firebase from '@firebase/app'
    

    格式化后,我可以从 firebase.firebase.messaging() 访问消息传递

    【讨论】:

      【解决方案2】:

      对于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)
      

      【讨论】:

        【解决方案3】:

        您必须包含import '@firebase/messaging' 才能使其工作。 所以它应该是这样的:

        import * as firebase from 'firebase/app';
        import '@firebase/messaging';
        

        【讨论】:

          【解决方案4】:

          Firebase 的文档并没有明确说明基于当前环境的可用功能存在差异。 firebase.messaging 不适用于 Node.js 客户端,但可从 firebase-admin 包中获得。但是,仅此软件包就具有一组不同的功能,专门针对 firebase.messaging

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

          【讨论】:

            【解决方案5】:

            您尝试使用的标准仅适用于浏览器:

            您必须要求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();
            

            【讨论】:

            • 我的想法是创建节点应用程序,它将接收来自 fcm 的通知,而无需任何浏览器交互。我正在尝试这些方法 var firebase = require("firebase/messaging"); 不起作用。
            猜你喜欢
            • 2018-11-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-02
            • 1970-01-01
            • 2018-03-19
            • 2018-10-13
            • 2016-02-07
            相关资源
            最近更新 更多