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

socket.io报ReferenceError: io is not defined 加载socket.io.js 404求助

错误原因

两个报错是因果关系:/socket.io/socket.io.js 404导致前端没加载到socket.io客户端脚本,全局io方法不存在,触发第二个引用错误。

核心问题出在服务启动逻辑上:你已经手动创建了绑定socket.io的HTTP服务实例server,但最后用app.listen启动服务,这个方法会内部生成新的HTTP实例,和你绑定了socket.io的server没有关联,socket.io对应的客户端静态资源路由没有被注册到实际对外服务的实例上,所以访问不到对应文件。

修复方法

修改server.js的服务启动代码,将最后一行的app.listen(3030);替换为server.listen(3030);即可,修改后的完整server.js代码如下:

const express=require('express');
const app=express();
const server=require('http').Server(app);
const {v4: uuidv4}= require('uuid');
const io=require('socket.io')(server)

app.set('view engine', 'ejs');
app.use(express.static('public'));

app.get('/',(req,res)=>{
    res.redirect(`/${uuidv4()}`);
})

app.get('/:room',(req,res)=>{
    res.render('room',{roomId :req.params.room});
})

io.on('connection',socket=>{
    socket.on('join-room',()=>{
        console.log("Room Joined");
    })
})

server.listen(3030);

修改后重启Node服务,刷新页面即可恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:27:03