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

如何修复Node Express报错cannot GET及EADDRINUSE端口占用问题

问题诊断与修复方案

1. 端口占用(EADDRINUSE)问题

原因

  • 你的server/index.js中重复调用了两次app.listen(PORT),同一个端口被重复监听,首次启动时第一次listen会成功,第二次listen直接触发端口占用报错
  • 首次启动后如果没有正确关闭Node进程,进程会一直在后台占用3001端口,后续启动也会触发该报错

修复步骤

  • 第一步:删除server/index.js中重复的app.listen代码,仅保留一次即可,修改后代码如下:
const express = require("express");
const PORT = process.env.PORT || 3001;
const app = express();

app.get("/api", (req, res) => {
    res.json({ message: "Hello from server!" });
});

// 仅保留一次listen调用
app.listen(PORT, () => {
  console.log(`Server listening on ${PORT}`);
});
  • 第二步:杀掉当前占用3001端口的后台进程:
    • Mac/Linux系统执行命令:lsof -ti:3001 | xargs kill -9
    • Windows系统在cmd中执行:
      1. 执行netstat -ano | findstr "3001",查询到占用3001端口的进程PID
      2. 执行taskkill /F /PID 你查到的PID号

2. 404 Cannot GET 报错问题

原因

你只定义了/api路径的GET请求处理逻辑,但你在浏览器访问的是localhost:3001(对应根路径/),服务端没有配置根路径的路由,自然返回404。

修复方案

二选一即可:

  • 方案1:直接访问http://localhost:3001/api,即可正常拿到你定义的JSON返回结果
  • 方案2:在服务端代码中补充根路径路由配置,示例:
// 在app.listen之前添加如下代码
app.get("/", (req, res) => {
  res.send("后端服务运行正常,如需接口数据请访问 /api 路径");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:30:05