安装 socket.io 时 SocketIO.Server 对象消失

Posted

技术标签:

【中文标题】安装 socket.io 时 SocketIO.Server 对象消失【英文标题】:SocketIO.Server Object disappears when installing socket.io 【发布时间】:2021-05-17 22:26:30 【问题描述】:

我想在 nodejs 中创建一个 Socket.io 服务器,但是,通过 const io = require('socket.io')(); 创建的 io 对象只返回 const io: any 没有任何属性或方法,我似乎无法连接到服务器。奇怪的是,当我通过 npm remove socket.io 删除节点模块时,io 对象返回 const io: SocketIO.Server 及其所有属性和方法。但是当我尝试运行它时,我收到一条错误消息,提示缺少模块,这是预期的,因为未安装该模块。

我只是不明白发生了什么。

感谢任何帮助:D

const io = require('socket.io')(path:'/socket');

io.listen(3400);

io.on('connection', socket => 
    console.log("Connection");
);

【问题讨论】:

【参考方案1】:

我试图重现您的问题,但没有成功。在代码末尾添加console.log(io) 时,对象输出看起来与预期一样。因此,您的服务器应该正在运行。

我的输出:

Server 
  _events: [Object: null prototype] ,
  _eventsCount: 0,
  _maxListeners: undefined,
  _nsps: Map 
    '/' => Namespace 
      _events: [Object: null prototype],
      _eventsCount: 1,
      _maxListeners: undefined,
      sockets: Map ,
      _fns: [],
...

您可能会混淆代码编辑器对变量实际值的不准确类型检测。 VSCode 也为我检测到 const io: any,即使套接字服务器工作正常。

【讨论】:

感谢您非常详细的回答。我想我的问题是客户端。尽管教程中的每个人都能够看到它们并使用自动完成功能,但我仍然看不到 io 对象的任何方法和属性。也许我的问题更多的是关于 VSCodes IntelliSense。 你的other question这个问题现在解决了吗?

以上是关于安装 socket.io 时 SocketIO.Server 对象消失的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 2 应用程序中导入 socket.io-client 时出错 [重复]

socket.io:关于广播和最大连接的查询

在vue中使用socket.io

Socket.io 安装抛出 Missing required argument 错误

我正在运行哪个版本的 Socket.IO?

Ubuntu 12.04 中的 Socket.io 错误