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

Socket.io连接后端(localhost:5001)出现404错误求助

问题原因与解决办法

核心错误:服务器启动对象错误

你创建了http.Server实例(const server = http.createServer(app))并把Socket.IO绑定到了这个server上,但最后启动服务器时用的是app.listen()。Express的app.listen()会创建一个全新的HTTP服务器,和你之前绑定Socket.IO的server不是同一个实例,导致Socket.IO的服务根本没在你指定的端口上运行,前端连接时自然返回404。

修复步骤

把后端启动服务器的代码从app.listen()改成server.listen():

修改后的数据库连接成功后的启动代码:

mongoose.connect(process.env.MONGO_URI)
  .then(() => {
    // 用server.listen代替app.listen
    server.listen(process.env.PORT, () => {
      console.log('listening on port', process.env.PORT);
    });
  })
  .catch((err) => {
    console.log(err);
  });

额外验证点

  1. 确认process.env.PORT的值确实是5001,可以在启动前打印该变量,避免端口配置不符。
  2. 前端Socket.IO连接地址http://localhost:5001/配置正确,无需修改。
  3. 你的CORS配置(Express的cors中间件和Socket.IO自身的CORS设置)均无问题,保持原样即可。

修复后重启后端服务器,前端就能正常建立Socket.IO连接了。

内容的提问来源于stack exchange,提问作者tan shi yu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:07:35