Mac启动Node项目提示EADDRINUSE端口5000已占用无法解决怎么办
问题根因
Mac 系统版本在 macOS 12 Monterey 及以上时,系统默认开启的隔空播放接收器服务会占用 5000、7000 端口,该服务属于系统内置服务,常规的端口查询、进程杀死命令无法正确识别、终止该服务,这也是同一份代码在Windows上可以正常运行的核心原因。
验证方法
执行以下命令可以确认是否为系统服务占用5000端口:
lsof -nP -iTCP:5000 | grep LISTEN
如果返回结果中进程名为ControlCenter,即可确认是隔空播放接收器占用。
解决方案
有两种可选方案:
方案1:关闭系统隔空播放接收器(释放5000端口)
操作路径:
- 打开系统设置 → 通用 → 隔空投送与接力
- 找到「隔空播放接收器」选项,关闭对应的开关即可
关闭后无需重启设备,直接重新启动你的Node服务即可正常占用5000端口。
方案2:修改Node服务监听的绑定地址
如果你不想关闭隔空播放功能,可以修改Node服务的监听逻辑,指定仅绑定IPv4地址即可,因为系统服务默认占用的是IPv6的:::5000地址,修改方法如下:
找到你server.js第45行的监听代码,原来的代码大概率是:
app.listen(5000, () => { ... })
修改为指定绑定127.0.0.1:
app.listen(5000, '127.0.0.1', () => { ... })
修改后重启Node服务即可正常启动。
内容的提问来源于stack exchange,提问作者Moody Omar
相关产品推荐
相关产品推荐

