开发时本地起个 npm start,浏览器一刷——报错:ERR_ADDRESS_IN_USE。刷新几次还是一样,八成是端口被占了。这时候别急着重启电脑,打开终端,三步搞定。
先看哪个端口被占了
常见场景比如:Vue 项目默认用 8080,React 用 3000,后端服务常用 8081、9000。先确认你想要的端口是不是真被占了:
lsof -i :3000
Mac/Linux 用户直接运行这句,如果返回一行进程信息,说明 3000 端口正被某个程序占着;没输出就代表空闲。Windows 用户请用:
netstat -ano | findstr :3000
注意末尾的冒号和端口号之间不能有空格,findstr 后面是英文冒号加数字。
找到进程,直接干掉
Mac/Linux 下,lsof 输出里有一列叫 PID(进程 ID),记下来,然后执行:
kill -9 12345
把 12345 换成你看到的实际 PID。Windows 下从 netstat 结果里找到最后一列的 PID,再运行:
taskkill /PID 12345 /F
加 /F 是强制结束,基本一杀一个准。
懒得记 PID?一键查杀组合技
Mac/Linux 用户可以写成一行(适合复制粘贴):
lsof -t -i :3000 | xargs kill -9
这句意思是:查出 3000 端口的 PID,直接传给 kill 杀掉。如果提示 lsof: command not found,先装一下:brew install lsof(Mac)或 sudo apt install psmisc(Ubuntu)。
小提醒:别乱杀系统进程
查到 PID 后,建议先用 ps -p 12345 -o comm=(Mac/Linux)或 tasklist /FI "PID eq 12345"(Win)看看进程名。如果是 Google Chrome 或 Code Helper 占着,可能只是某个网页或插件在调试,关掉对应标签页或扩展更稳妥;但如果是 node、java、python 这类明显是你自己起的服务,放心杀。
下次再遇到「端口已被占用」,不用翻文档、不用重装软件,开终端,敲两行,秒恢复。