关于 detecting-port-conflicts
用于诊断端口占用错误并选择恢复开发服务器的方法。它指导检查占用进程、终止进程或改用其他端口。
主要功能
- 01识别常见端口冲突错误
- 02用 lsof 查找端口占用进程
- 03提供终止进程或更换端口方案
- 04提示批量终止 Node 进程的风险
适用场景
- 01排查开发服务器无法启动的原因
- 02查找占用端口的进程
- 03在可用端口重新启动服务器
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ spencerpauly/ awesome-cursor-skills --skill detecting-port-conflicts安装后在 Claude Code 中输入/detecting-port-conflicts确认已加载。
详细介绍
检测端口冲突
当开发服务器因端口已被占用而无法启动时,请诊断并解决问题。
检测
扫描终端输出,查找以下模式:
EADDRINUSEaddress already in usePort XXXX is already in usebind: address already in useOSError: [Errno 98] Address already in use
从错误消息中提取端口号。
诊断
查找占用端口的程序:
lsof -i :<PORT> -P -n
这会显示 PID、进程名称和用户。常见原因包括:
- 未能正常关闭的上一个开发服务器
- 另一个项目的开发服务器
- Docker 容器
- 系统服务
解决方案
选项 1:终止占用端口的进程
kill <PID>
# If it doesn't stop:
kill -9 <PID>
然后重新启动原服务器。
选项 2:使用其他端口
建议使用下一个可用端口:
# Check if port+1 is free
lsof -i :<PORT+1> -P -n
更新开发服务器配置或启动命令:
- Next.js:
next dev -p <PORT> - Vite:
vite --port <PORT> - Express:设置
PORT环境变量 - Django:
python manage.py runserver <PORT>
选项 3:终止所有 node 进程(强制选项)
killall node
仅在用户确认后建议此操作——它会终止所有进程。
提示
- 在 macOS 上,低于 1024 的端口需要 root 权限
- Docker 容器绑定的端口即使容器已停止仍会保留——请检查
docker ps - 如果
lsof没有显示任何内容,端口可能处于 TIME_WAIT 状态——等待 30 秒,或使用其他端口
评论
支持 Markdown