繁体   English   中英

Socket.io 未捕获类型错误:无法读取未定义的属性“应用”

Socket.io Uncaught TypeError: Cannot read property 'apply' of undefined

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

特定事件在我使用 socket.io 的程序中不起作用。 其余的工作正常。 这是出现问题的地方:

第一个html文件:

 socket.on('connect', () => {socket.emit('phone', 'phone');});

服务器文件:

io.on('connection', function(socket){ 
   io.on('phone', function(socket, data){ 
      io.emit('stuurbedrijfsnaam', 'stuurbedrijfsnaam'); 
   }); 
});

第二个html文件:

socket.on('stuurbedrijfsnaam', function(socket){
    socket.emit('stuurbedrijfsnaam',bedrijfsnaam) 
})

这是控制台中给出的完整错误:

index.js:83 Uncaught TypeError: Cannot read property 'apply' of undefined
at r.emit (index.js:83)
at r.onevent (index.js:83)
at r.onpacket (index.js:83)
at r.<anonymous> (index.js:83)
at r.emit (index.js:83)
at r.ondecoded (index.js:83)
at a.<anonymous> (index.js:83)
at a.r.emit (index.js:83)
at a.add (index.js:83)
at r.ondata (index.js:83)
at r.<anonymous> (index.js:83)
at r.emit (index.js:83)
at r.onPacket (index.js:83)
at r.<anonymous> (index.js:83)
at r.emit (index.js:83)
at r.onPacket (index.js:83)
at r.onData (index.js:83)
at WebSocket.ws.onmessage (index.js:83)

它引用了 index.js:83,它位于 socket.io 本身创建的文件夹中。 有第 81、82 和 83 行:

Backoff.prototype.setJitter = function(jitter){
    this.jitter = jitter;
    };

希望我给了足够的资源。 如果有人帮助我会很酷。 谢谢!

2 个回复

此错误的原因是您尝试通过自定义事件处理程序的socket参数调用.emit() ,根据 socket.io 客户端 API 的文档,这是不正确的用法

考虑通过从处理程序中删除socket参数来修改您的客户端代码,如下所示,使.emit()在实际的套接字实例上被调用:

socket.on('stuurbedrijfsnaam', function(){ // remove 'socket' here

   // cause emit() to be called on actual socket instance
   socket.emit('stuurbedrijfsnaam',bedrijfsnaam) 
})

原因socket.emit('phone', 'phone'); 在您的第一个 html 文件中,在原始套接字实例上调用了emit() ,而不是通过传递给事件处理程序的socket参数,就像您在第二个 html 文件中所做的那样。

希望有帮助!

对于任何搜索此错误的人。 它可能是由在未定义的.on方法中提供变量作为第二个参数引起的。 socket.io 的内部代码尝试调用.apply方法将参数传递给您的事件处理程序。 如果注册的函数不存在并因此undefined ,则会发生此错误,因为未定义的值没有此类属性。 通常可能是函数名称中的拼写错误

IE

socket.on('next_player', this.nextplayer)

应该 :

socket.on('next_player', this.next_player)
9 无法读取未定义的属性$ socket-测试socket.io

我正在使用VueJS和socket.io生成一条消息,以显示给我的应用程序的所有用户。 我的消息是从我对商店的操作中发出的。 它工作正常,但是当我测试代码时,出现一个错误:“无法读取未定义的$ socket属性”(来自我的操作)。 我的main.js: 我对商店的操作: 我的测试: 我 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM