2016-11-17 5 views
0

Erhalten Sie einen TypeError und ich kann nicht herausfinden, warum. Ich habe Firebase mit (npm install firebase --save) installiert. Hier ist mein Code:Knoten und Firebase Cloud Messaging TypeError

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"); 
      }); 
    }); 

Dies ist der Fehler, den ich erhalte. InitializeApp scheint zu funktionieren, aber Messaging funktioniert nicht. (npm -v firebase) spuckt 3.10 aus, aber die npm Webseite sagt das neueste ist 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) 

Jede Hilfe wird sehr geschätzt.

Antwort

2

Nach der Lektüre dieses: https://www.npmjs.com/package/firebase

". Firebase Cloud Messaging ist nicht in der Server-Seite Firebase npm Modul enthalten Stattdessen können Sie die Firebase Cloud Messaging-REST-API verwenden"

Sie sollten also Ruhezeiten für die Nachrichtenübermittlung einstellen, aber Sie können die Nachrichtenfunktion nicht im Code verwenden, wie Sie es versucht haben.

finden Sie in der API-Dokumentation REST: https://firebase.google.com/docs/cloud-messaging/send-message#http_post_request

+0

Ich war nicht versucht, eine Nachricht zu senden. Mein erster Schritt beim Einrichten von Firebase besteht darin, eine Benachrichtigungsberechtigung vom Benutzer mithilfe des Verfahrens in diesem Video anzufordern (https://firebase.google.com/docs/cloud-messaging/js/client). Ich brauche zuerst die Erlaubnis, und dann kann ich ein Benutzer-Token für das Senden von Nachrichten später greifen. –

+0

Der Code zum Anfordern der Berechtigung muss jedoch im Browser des Benutzers und nicht im serverseitigen Prozess node.js ausgeführt werden. –

Verwandte Themen