【问题标题】:Node and Firebase Cloud Messaging TypeError节点和 Firebase 云消息传递类型错误
【发布时间】:2017-04-01 11:01:44
【问题描述】:

不断收到 TypeError,我不知道为什么。我使用 (npm install firebase --save) 安装了 Firebase。这是我的代码:

    var firebase = require("firebase"); // Firebase
var express = require('express'); // Express instaniated a different way for serving static webpages
var app = express(); // Express App include

    // Set port
    app.listen(8085);

    // Initialize Firebase
        var config = {
            apiKey: "AIza...............",
            authDomain: ".....firebaseapp.com",
            databaseURL: "...............",
            storageBucket: "..........appspot.com",
            messagingSenderId: "..............."
        };
        firebase.initializeApp(config);

    // Create the URL for using Firebase
    app.get('/fcmtest', function (req, res) {

        const messaging = firebase.messaging();
        messaging.requestPermission()
            .then(function () {
                console.log("Have Permission")
            })
            .catch(function (err) {
                console.log("Do Not Have Permission");
            });
    });

这是我收到的错误。 InitializeApp 似乎工作正常,但消息传递不起作用。 (npm -v firebase) 吐出 3.10,但 npm 网页显示最新的是 3.6.1。

TypeError: firebase.messaging is not a function
   at /usr/gserv/services/app.js:226:32
   at Layer.handle [as handle_request] (/usr/gserv/services/node_modules/express/lib/router/layer.js:95:5)
   at next (/usr/gserv/services/node_modules/express/lib/router/route.js:131:13)
   at Route.dispatch (/usr/gserv/services/node_modules/express/lib/router/route.js:112:3)
   at Layer.handle [as handle_request] (/usr/gserv/services/node_modules/express/lib/router/layer.js:95:5)
   at /usr/gserv/services/node_modules/express/lib/router/index.js:277:22
   at Function.process_params (/usr/gserv/services/node_modules/express/lib/router/index.js:330:12)
   at next (/usr/gserv/services/node_modules/express/lib/router/index.js:271:10)
   at /usr/gserv/services/node_modules/connect-busboy/index.js:14:14
   at Layer.handle [as handle_request] (/usr/gserv/services/node_modules/express/lib/router/layer.js:95:5)

非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

    读完后: https://www.npmjs.com/package/firebase

    “Firebase Cloud Messaging 不包含在服务器端 Firebase npm 模块中。相反,您可以使用 Firebase Cloud Messaging Rest API。”

    所以你应该为消息传递休息调用,但你不能像你尝试的那样在代码中使用消息传递功能。

    请参阅 REST API 文档: https://firebase.google.com/docs/cloud-messaging/send-message#http_post_request

    【讨论】:

    • 我没有尝试发送消息。我设置 firebase 的第一步是使用此视频中的流程向用户请求通知权限 (firebase.google.com/docs/cloud-messaging/js/client)。我需要先获得许可,然后我才能获取用户令牌以便稍后发送消息。
    • 但是请求权限的代码必须在用户的浏览器中运行,而不是在服务器端的node.js进程中。
    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多