Node应用启动报EADDRINUSE端口5000被占用,杀进程后仍重复占用如何解决
解决方案
第一步:确认占用5000端口的进程归属
执行以下命令查看端口占用进程的详细信息:
# Mac/Linux通用 sudo lsof -i :5000
查看输出结果的COMMAND列,确认进程名称。
第二步:对应场景解决
场景1:进程名称为ControlCenter(Mac系统专属高频问题)
这是Mac系统自带的AirPlay接收器默认占用了5000、7000端口,杀进程会自动重启,属于系统级服务:
- 打开「系统设置」→「通用」→「隔空投送与接力」
- 关闭「AirPlay接收器」开关即可释放端口
场景2:进程为你的Node/React应用进程
你仓库同时包含Node后端和React前端代码,大概率是端口配置冲突:
- 检查根目录Node应用的
package.json启动脚本、代码中监听端口的配置 - 检查client文件夹下React应用的
package.json启动配置,React默认启动端口为3000,如果被修改为5000就会和后端抢端口,改回3000或者其他未占用端口即可 - 也可以直接修改Node应用的监听端口为5001等未被占用的端口,避免冲突
场景3:其他系统服务占用
如果是其他系统级服务占用端口,不要直接杀进程,系统服务被杀后会自动重启:
- 先确认服务用途,如果不需要该服务,直接禁用服务自启后再停止服务即可释放端口
- 如果需要保留该服务,修改对应服务的监听端口,或者修改你的Node应用的监听端口即可
注意:PID 1是系统的初始化核心进程,禁止执行kill操作,会直接导致系统崩溃重启
内容的提问来源于stack exchange,提问作者Sahil Goyal
相关产品推荐
相关产品推荐

