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 调用、配置优先级和日志中的地址。
相关文档
官方资料
继续阅读
- 排错
- 知识专题
- 命令与对象入口