Express应用启动崩溃:端口3000已被占用问题求助
解决Express应用启动崩溃问题
一、核心崩溃原因:端口3000被占用
错误日志里的EADDRINUSE: address already in use :::3000明确说明端口3000已被其他进程占用,导致Express无法监听该端口。以下是三种解决方法:
杀掉占用端口的进程
- Windows系统:
- 打开命令提示符,执行命令查找占用3000端口的进程PID:
netstat -ano | findstr :3000 - 用找到的PID强制终止进程:
taskkill /PID <你的PID> /F
- 打开命令提示符,执行命令查找占用3000端口的进程PID:
- macOS/Linux系统:
直接执行命令一键杀掉占用3000端口的进程:lsof -ti:3000 | xargs kill -9
- Windows系统:
修改监听端口
把代码里的监听端口从3000改成其他未被占用的端口,比如3001:app.listen(3001, () => { console.log("App is loading on Port no 3001!"); });让Express自动选择可用端口
如果不想手动指定端口,可以让系统自动分配可用端口,代码修改为:app.listen(0, () => { console.log(`App is loading on Port no ${app.address().port}!`); });
二、修复代码中的潜在问题
你的Express代码还有两个小问题,虽然不是这次崩溃的原因,但会导致后续请求出错:
路由回调参数顺序颠倒
app.get的回调函数参数顺序应该是(req, res)(请求对象在前,响应对象在后),你写反成了(res, req),修正后:app.get('/', (req, res) => { res.send("Hello Rushikesh! "); });拼写错误
启动日志里的lodding是拼写错误,应该改为loading,避免日志误导。
内容的提问来源于stack exchange,提问作者Rushikesh
相关产品推荐
相关产品推荐

