MacOS Sonoma下所有端口均报listen EADDRINUSE错误求助
解决MacOS Sonoma下Node.js/Express无论更换端口均报
EADDRINUSE的问题 排查与解决方案
1. 定位非Node进程占用端口
你的kill命令仅针对Node进程,但占用端口的可能是其他程序。用以下命令精准定位:
- 检查指定端口(示例为1000):
输出中lsof -i :1000PID列即为进程ID,执行kill -9 <PID>强制终止该进程。 - 查看所有监听的IPv6端口(错误中
::属于IPv6地址):
找到对应端口的进程后终止。netstat -anp tcp | grep LISTEN
2. 关闭AirPlay Receiver
MacOS Sonoma默认开启的AirPlay Receiver会占用5000、7000等端口,易引发冲突:
- 打开「系统设置」→「通用」→「AirDrop与Handoff」
- 关闭「AirPlay Receiver」选项,重启终端后重新运行项目
3. 清理隐藏的Node残留进程
ps -ae | grep node可能遗漏后台进程,用更全面的命令排查:
ps aux | grep node
找到所有Node进程的PID后执行kill -9 <PID>,或直接批量终止:
pkill -9 node
4. 检查代码是否重复监听端口
查看src/index.ts第37行附近的代码,确认是否存在多次调用app.listen()的逻辑(比如循环、多文件重复监听),确保仅在一处启动服务监听。
5. 重置网络栈
若以上方法无效,可能是系统网络栈异常,执行以下命令重置:
sudo ifconfig lo0 down && sudo ifconfig lo0 up
或直接重启电脑,彻底恢复网络状态。
内容的提问来源于stack exchange,提问作者Sithum Sithara
相关产品推荐
相关产品推荐

