vscode无图形化端口视图,需用系统命令查杀:macos/linux运行lsof -ni:端口号,windows powershell用get-nettcpconnection -localport端口号,cmd用netstat -ano | findstr :端口号;查pid后先软杀再硬杀,避免子进程残留;改端口须对症配置——live server改liveserver.settings.port,调试改launch.json或debug.javascript.chrome.port,脚手架项目用port环境变量。

VSCode 本身不提供端口占用的图形化视图,所有“看端口”操作都得靠系统命令——不是 VSCode 功能弱,而是端口归属操作系统网络栈,IDE 只能调用底层工具查。
查端口占用:用对命令,别被 DNS 卡住
直接在 VSCode 内置终端(Ctrl + `)里运行对应命令,比切到系统终端更快,且上下文一致:
- macOS/Linux:
lsof -ni :3000(加-n跳过 DNS 解析,避免卡顿;-i限定网络连接;把3000换成你实际报错的端口号) - Windows PowerShell:
Get-NetTCPConnection -LocalPort 3000(直接返回OwningProcess字段,就是 PID,最准) - Windows CMD:
netstat -ano | findstr :3000(注意输出中 PID 是十进制,需在任务管理器“详细信息”页开启“PID”列才能匹配)
如果 lsof 报 command not found,macOS 先运行 xcode-select --install 或 brew install lsof;Windows 上若 netstat 不可用,优先换 PowerShell 命令。
杀进程不能只 kill -9:子进程会偷偷续命
查到 PID 后,别立刻 kill -9 或 taskkill /f /pid。很多 Node 服务(比如 Live Server、React dev server)会拉起子进程(npm、yarn、node 子线程),硬杀主进程后,子进程可能继续占端口或锁文件。
- macOS/Linux:先
kill 1234(发 SIGTERM,等 2 秒),无响应再kill -9 1234 - Windows:必须加
/t参数,taskkill /f /t /pid 1234,否则 npm/yarn 子进程大概率残留 - 更彻底清理 VS Code 自家进程:
killall -r "Code Helper|Code|Electron"(macOS/Linux)或taskkill /f /t /im Code.exe && taskkill /f /t /im CodeHelper.exe(Windows)
杀完立刻验证:lsof -i :3000 或 Get-NetTCPConnection -LocalPort 3000 应该无输出。有输出,说明还有漏网之鱼。
为什么改了 launch.json 还报 EADDRINUSE?配置没打到点上
launch.json 里的 port 只影响 Debugger(比如 Node.js 调试器),跟 Live Server、前端 dev server、Codex 登录服务完全无关。常见误判:
- Live Server 占 5500?改的是
liveServer.settings.port(VS Code 设置里搜这个 key,填5501等空闲值) - React/Vite 启动占 3000?它根本不读 VS Code 配置,得在终端里加环境变量:
PORT=3001 npm start,或改package.jsonscripts - Chrome 调试器也抢端口?它还读全局设置:
debug.javascript.chrome.port,同样在 VS Code 设置里搜改
改完配置后,记得手动关掉已运行的调试会话或 Live Server,旧进程不会自动 reload 新端口。
真正容易被忽略的点是:不同服务绑定地址可能不同(0.0.0.0:3000、127.0.0.1:3000、::1:3000),但端口冲突仍存在。查占用时用 lsof -iTCP -sTCP:LISTEN -n(macOS/Linux)或 netstat -aon | findstr LISTENING(Windows),重点看 Address 列是否混用了 IPv4/IPv6 localhost。











