Skip to content

Node 服务端口被占用 ​

找到占用端口的进程,核对是否是已有服务实例。

EADDRINUSE 表示监听地址或端口已被占用。先确认端口和绑定地址;不要在不核对进程身份的情况下直接结束进程。

排查步骤 ​

1. 记录错误中的地址和端口 ​

node server.js

预期结果: 从 EADDRINUSE 行确认实际端口,例如 3000;核对是否和配置一致。

2. 按操作系统查找监听进程 ​

lsof -nP -iTCP:3000 -sTCP:LISTEN
# Windows: netstat -ano | findstr :3000

预期结果: 得到进程 ID,再查看进程名与启动路径,判断是否为旧实例。

3. 按项目配置选择可用端口 ​

$env:PORT="3001"; node server.js
# 上行为PowerShell;Bash使用 PORT=3001 node server.js

预期结果: 若项目读取 PORT 环境变量,新实例可启动;否则修改项目实际使用的端口设置。

常见报错 ​

EADDRINUSE 0.0.0.0:3000 ​

原因: 同端口已有监听者,包括绑定全部接口的进程。

处理方式: 确认 PID 和进程身份,再决定复用、正常关闭或换端口。

换端口后仍报错 ​

原因: 应用未读取 PORT,或还有另一个监听地址。

处理方式: 检查实际 listen 调用、配置优先级和日志中的地址。

相关文档 ​

官方资料 ​

继续阅读