使用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
相关产品推荐
相关产品推荐

