vscode报eaddrinuse错误八成因调试或live server未彻底退出,应先用powershell的get-nettcpconnection -localport命令(windows)或lsof -ni命令(macos/linux)精准查pid,再taskkill /f /t /pid或kill -9终止进程树,或修改live server端口配置、launch.json调试端口等对应设置。

VSCode 运行 Node 报 EADDRINUSE,八成不是真有“僵尸进程”,而是上一次调试或 Live Server 没退出干净,留了个挂着监听套接字的 node.exe 或 Code Helper 进程在后台——它没死透,端口还锁着。
查 PID 别靠猜,用命令直出 OwningProcess
Windows 上别再用 netstat -ano | findstr :3000 然后手动翻任务管理器找 PID:容易看错同名进程(一堆 node.exe),也容易漏掉子进程。直接上 PowerShell:
Get-NetTCPConnection -LocalPort 3000 | Select-Object LocalAddress, LocalPort, State, OwningProcess
输出里 OwningProcess 就是真实 PID,不用转换、不卡 DNS、不依赖第三方工具。
- macOS/Linux 用
lsof -ni :3000(-n跳过 DNS 解析,-i只筛网络连接) - 如果
lsof报 command not found,先运行xcode-select --install(macOS)或brew install lsof - 别用
ps aux | grep node全局扫——可能扫出你正在跑的其他项目,误杀风险高
杀进程不能只 taskkill /f /pid
直接加 /f 强杀,node.exe 是没了,但它拉起来的 npm、yarn、甚至 GPU 渲染子进程还在,端口照占。必须带 /t 参数清整棵进程树:
taskkill /f /t /pid 12345
对应 macOS/Linux:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 先
kill 12345(发SIGTERM,给进程机会 cleanup) - 等 2 秒无响应,再
kill -9 12345 - 更彻底?
killall -r "Code Helper|Code|Electron"——专治 VS Code 自家残留
改端口比杀进程更省心,但得改对地方
launch.json 里的 port 只管 Debugger,不影响 Live Server;报错说 5500 被占,大概率是 Live Server 在作祟。改配置要分人下药:
- Live Server:设置里搜
liveServer.settings.port,填5501或8082(别填0,它不认) - Node.js 调试:确认
.vscode/launch.json中port字段没硬编码成9229,改成9230更稳妥 - Remote-SSH:加配置项
"remote.SSH.defaultForwardedPorts": ["3001", "3002"],避开默认抢3000
改完别忘了关掉右下角已启动的 Live Server(点“Go Live”再点一次停掉),否则新端口不会生效。
验证端口是否真释放,别信“我以为”
杀完、改完,立刻验证:
- Windows:
Get-NetTCPConnection -LocalPort 3000应该报错 “No matching MSFT_NetTCPConnection objects found” - macOS/Linux:
lsof -i :3000应该无任何输出 - 如果还有输出,说明还有漏网进程——常见的是
Code Helper (Renderer)或node --inspect残留,得再杀一轮
最常被忽略的一点:VS Code 的 Terminal 标签页即使看起来“空了”,里面挂起的 node 进程也可能还在监听。Ctrl+C 失效时,优先用 Ctrl+Shift+P → Terminal: Kill the Active Terminal Instance,比手动杀 PID 更干净。










