2016-04-24 5 views
0

Warum ist der Socket im Callback undefiniert?Socket undefiniert in Callback für Verbindung

main.js:26078 Uncaught TypeError: Cannot read property 'on' of undefined 

Das Konsolenprotokoll ist ein Socket-Objekt.

var jwt = sessionStorage.token; 
console.log(socket); 
socket.on('connect', function (socket) { // undefined socket 
    socket.on('authenticated', function() { 
    //do other things 
    }) 
    .emit('authenticate', {token: jwt}); //send the jwt 
}); 

Antwort

1

Angenommen, dies ist Client-Code, gibt es kein socket Argument für die Veranstaltung connect geben, so entfernen, dass aus dem Code. Wenn Sie das Argument socket benennen, überschreiben Sie die Variable mit dem höheren Bereich socket, und da an diesem Ereignis nichts übergeben wird, ist diese überschriebene socket-Variable dann undefined. Ändern Sie dazu:

var jwt = sessionStorage.token; 
console.log(socket); 
// remove socket argument from this next callback 
socket.on('connect', function() { 
    socket.on('authenticated', function() { // undefined socket 
    //do other things 
    }) 
    .emit('authenticate', {token: jwt}); //send the jwt 
}); 
+0

Warum hatte das Beispiel hier einen Socket im Rückruf? https://github.com/auth0/socketio-jwt#example-usage –

+0

@amiawizard - Dieses Client-Beispiel sieht falsch aus. Das socket.io-Clientdokument zeigt kein Argument für den Rückruf für das Ereignis "connect" an. – jfriend00

+0

@amiawizard - Konnte das deine ursprüngliche Frage beantworten? – jfriend00