2016-08-13 3 views
2

ich den Knoten Code auf dieser Seite lief https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html unter Verwendung:request.ref ist keine Funktion

node app 

Ich erhalte die folgende Fehlermeldung:

TypeError: request.ref is not a function. 

, die auf der folgenden Zeile entspricht:

sendNotificationToUser("username","new msg",function() {request.ref().remove();}); 

Das ist mein package.json Datei:

{ 
"name": "myApp", 
"version": "1.0.1", 
"description": "listen for addition of msgs", 
"main": "app.js", 
"scripts": { 
"start": "node app.js", 
"monitor": "nodemon app.js", 
"deploy": "gcloud app deploy" 
}, 
"author": "my name", 
"engines": { 
"node": "~4.2" 
}, 
"license": "ISC", 
"dependencies": { 
"firebase": "^3.2.1", 
"request": "^2.74.0" 
} 
} 
+1

Ich denke, es ist ein Tippfehler in der Anleitung, versuchen 'request.ref.remove()' –

+0

@MichaelBleigh Ich bekomme diesen Fehler bei der Verwendung von 'request.ref.remove()': TypeError: Kann die Eigenschaft 'Entfernen' von undefined –

+0

nicht lesen Zeigen Sie uns den Rest Ihres Codes. – ishmaelMakitla

Antwort

5

Es gibt tatsächlich einige Tippfehler im Code. Die aktuelle Version I mit Anwendungen ausführen, um diese um die Nachrichten zu entfernen, die gesendet wurden:

requestSnapshot.ref.remove(); 

Die gesamte listenForNotificationRequests Methode (im Fall habe ich alle anderen bearbeiten Fehler während auf den Blog Portierung):

function listenForNotificationRequests() { 
    var requests = ref.child('notificationRequests'); 
    requests.on('child_added', function(requestSnapshot) { 
    var request = requestSnapshot.val(); 
    sendNotificationToUser(
     request.username, 
     request.message, 
     function() { 
     requestSnapshot.ref.remove(); 
     } 
    ); 
    }, function(error) { 
    console.error(error); 
    }); 
}; 
+0

Danke für die Antwort Frank, ich bekomme immer noch einen Fehler während der Bereitstellung auf dem Server, könntest du mir mit 2 Dingen helfen: Kannst du mir bitte den vollständigen korrigierten Code des Blogposts + Code für die Verwendung von Warteschlangen zum Senden geben Benachrichtigungen. –

+0

Frank, ich wollte dich fragen, ob ich die erforderlichen Felder wie API_KEY, serviceAccount etc. einfüge, die benötigten Knotenmodule hinzufüge, npm installiere. Kann ich meine Knoten App auf Heroku dann OR bereitstellen Muss ich Sachen wie Express-Paket hinzufügen. –

+1

Ich führe den Code als einen einfachen Knoten-Prozess. Da alle Anfragen über die Firebase-Datenbank an das Skript gesendet werden, ist kein Webserver wie Express erforderlich. Ich würde erwarten, dass solch ein node.js-Prozess auf Heroku ausgeführt werden kann, aber dort nicht helfen kann. –