2016-11-17 65 views
0

继续收到TypeError,我无法弄清楚原因。我使用(npm install firebase --save)安装了Firebase。这是我的代码:节点和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) 

任何帮助,非常感谢。

回答

2

看完这个: https://www.npmjs.com/package/firebase

“没有包含服务器端火力地堡NPM模块火力地堡云消息相反,你可以使用火力地堡云端通讯REST API”

因此,您应该对其他消息进行其他调用,但是您不能在代码中使用消息传递函数。

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

+0

我不是试图发送一个消息。设置Firebase的第一步是使用此视频中的过程向用户请求通知许可(https://firebase.google.com/docs/cloud-messaging/js/client)。我需要先获得许可,然后我可以获取用户令牌以便稍后发送消息。 –

+0

但是请求权限的代码必须在用户的浏览器中运行,而不是在服务器端的node.js进程中运行。 –

相关问题