VS Code中Node.js需多次运行才启动,提示EADDRINUSE错误
解决Node.js监听端口EADDRINUSE但端口未被占用的问题
1. 清理VS Code残留的Node进程
每次点击运行时,VS Code可能会启动新的Node进程,但之前的进程因未处理退出信号,仍在后台悄悄占用端口。
- 手动终止:在VS Code终端按
Ctrl+C停止当前进程;打开「运行和调试」面板,检查并关闭所有残留的运行会话。 - 代码层面优化:给服务器添加退出信号监听,确保进程能彻底关闭:
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(new Date().toString()); }).listen(5500, () => { console.log('服务器已在5500端口启动'); }); // 监听终端中断信号,关闭服务器后退出进程 process.on('SIGINT', () => { server.close(() => { console.log('服务器已关闭'); process.exit(0); }); });
2. 处理端口TIME_WAIT状态
即使进程已终止,系统可能因TCP连接的TIME_WAIT机制暂时保留端口,导致看起来端口空闲但无法立即重新绑定。
- Windows:
- 打开命令提示符,执行
netstat -ano | findstr :5500找到占用端口的PID。 - 执行
taskkill /F /PID <找到的PID>强制终止对应进程。
- 打开命令提示符,执行
- macOS/Linux:
- 在终端执行
lsof -i :5500获取进程PID。 - 执行
kill -9 <找到的PID>彻底终止进程。
- 在终端执行
3. 检查VS Code运行/调试配置
若使用调试模式或自动重启工具(如nodemon),可能导致重复启动进程:
- 查看
.vscode/launch.json,确保没有重复的启动配置项。 - 若用nodemon,确认它能正确检测文件变化并替换进程,而非启动多个实例。
内容的提问来源于stack exchange,提问作者protato
相关产品推荐
相关产品推荐

