为什么macOS Monterey下NodeJS无法在默认5000端口启动?
macOS Monterey 5000端口被Control Center占用问题说明
根本原因
macOS Monterey版本新增了AirPlay接收器功能,默认处于启用状态,允许其他苹果设备通过AirPlay协议将音频、视频、屏幕内容投射到当前Mac设备上。该功能的后台服务由Control Center托管,默认占用5000、7000两个端口,因此会导致本地开发时端口冲突。
冲突验证
你可以执行以下命令确认5000端口的占用进程:lsof -i :5000
输出结果中如果COMMAND列显示为ControlCenter,即可确认是系统AirPlay服务占用了端口。
解决方案
- 方案1:关闭AirPlay接收器(永久释放5000端口)
打开系统偏好设置 → 找到「共享」选项 → 取消勾选列表中的「AirPlay接收器」即可,操作完成后端口会立即释放无需重启电脑。
如果你后续升级到了macOS Ventura及以上版本,操作路径调整为:系统设置 → 通用 → 隔空投送与接力 → 关闭「AirPlay接收器」。
注意:关闭后你的Mac将无法作为AirPlay投屏接收端使用,如果有投屏需求建议选择方案2 - 方案2:修改Node服务启动端口
如果你需要保留AirPlay功能,可以直接修改Node项目的监听端口,启动时指定端口即可:PORT=自定义端口号 node 你的启动文件.js
也可以直接在项目的配置文件(比如.env、app.js等)中将默认监听端口从5000修改为其他未被占用的端口。
内容的提问来源于stack exchange,提问作者MDalprato
相关产品推荐
相关产品推荐

