You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node.js搭建Socket.io应用时遇io.on不是函数错误求助

解决Socket.IO中io.on is not a function错误

这个错误的核心原因是你初始化Socket.IO服务器实例的方式不正确,导致io对象不具备on方法。以下是不同版本的正确解决步骤:

主流版本(Socket.IO v3+)

如果是通过npm install socket.io安装的最新版,必须先创建HTTP服务器,再用Server类初始化Socket.IO:

const express = require('express');
const http = require('http');
const { Server } = require('socket.io');

const app = express();
const server = http.createServer(app);
// 正确初始化Socket.IO服务器实例
const io = new Server(server);

// 现在可以正常使用io.on方法
io.on('connection', (socket) => {
  console.log('用户已连接');
  // 后续业务逻辑写在这里
});

server.listen(5000, () => {
  console.log('服务器运行在5000端口');
});

旧版本(Socket.IO v2及更早)

如果项目依赖旧版Socket.IO,初始化方式略有不同:

const express = require('express');
const http = require('http');
const socketIO = require('socket.io');

const app = express();
const server = http.createServer(app);
// 旧版直接调用socketIO模块传入服务器实例
const io = socketIO(server);

io.on('connection', (socket) => {
  console.log('用户已连接');
});

server.listen(5000);

额外排查点

  • 确认已安装Socket.IO:执行npm install socket.io,若需指定旧版可运行npm install socket.io@2.4.1
  • 不要混淆客户端与服务器端的Socket.IO导入方式:客户端用socket.io-client,服务器端必须用上述服务器端初始化逻辑
  • 检查代码拼写,确保是io.on而非大小写错误或其他拼写失误

内容的提问来源于stack exchange,提问作者PaintEasyTM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:20:27