为什么回调中的套接字未定义?
main.js:26078 Uncaught TypeError: Cannot read property 'on' of undefined
控制台日志是一个套接字对象。
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
});
假设这是客户端代码,则没有传递给connect
事件的socket
参数,因此请将其从代码中删除。 通过将该参数命名为 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
});