2016-04-24 61 views
0

爲什麼回調中的套接字未定義?套接字在回調中未定義

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

控制檯日誌是一個Socket對象。

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

回答

1

假設這是客戶端代碼,沒有socket參數傳遞給connect事件,所以從你的代碼中刪除。通過命名該參數socket,您重寫了更高範圍的socket變量,並且由於沒有任何內容傳遞給該事件,因此此重寫的socket變量將爲undefined。更改爲:

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

爲什麼這裏的示例在回調中有一個套接字? https://github.com/auth0/socketio-jwt#example-usage –

+0

@amiawizard - 客戶端示例看起來不對。 socket.io客戶機doc不顯示任何參數給'connect'事件的回調。 – jfriend00

+0

@amiawizard - 這是否回答了您的原始問題? – jfriend00