NodeJS运行时抛出: Error: listen EADDRINUSE :::3000

本文详细解析了端口号3000被占用导致的错误“listenEADDRINUSE:::3000”,提供了两种解决方法:一是通过kill命令强制结束占用端口的进程,二是更改应用程序监听的端口号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误详情

Error: listen EADDRINUSE :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1360:14)
    at listenInCluster (net.js:1401:12)
    at Server.listen (net.js:1485:7)
    at Function.listen (/home/jasmine/My-Documents/web-learn/express-learn/make-middleware/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/jasmine/My-Documents/web-learn/express-learn/make-middleware/index.js:15:5)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)

错误分析

端口号 3000 已被占用
在shell中验证如下:
查找系统所示正在使用的端口列表

	netstat -lntp

查看当前系统在使用的端口列表

解决方法

就一件事:解除占用
方法一:

kill -9 占用端口3000的进程ID号

方法二:
关闭当前命令行,再重开命令行,再执行脚本。

或者:在程序中换一个监听的端口号呗。

Node.js中,`net`模块的错误`Uncaught Error: read ECONNRESET`通常发生在客户端断开连接,服务器尝试读取数据,但是连接已经关闭。这种情况可能由多种原因引起,比如超、网络中断、对方主动关闭等。 要解决这个问题,可以按照以下步骤检查并调整代码: 1. **处理连接异常**:在接收数据添加错误处理,捕获`read ECONNRESET`异常。例如: ```javascript const net = require('net'); const server = net.createServer((socket) => { socket.on('data', (data) => { try { // 解析接收到的数据 const parsedData = JSON.parse(data); // ... 处理数据 ... } catch (error) { if (error.code === 'ECONNRESET') { console.error(`Client disconnected: ${error.message}`); socket.destroy(); // 关闭socket防止资源泄漏 } else { throw error; // 其他未知错误直接抛出 } } }); socket.on('error', (error) => { if (error.code === 'ECONNRESET') { console.error(`Connection lost: ${error.message}`); } else { console.error(error); // 其它错误日志 } }); }); server.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. **设置合理的连接超**:如果你正在建立一个长连接,考虑设置适当的`setTimeout`来检测连接是否保持活跃,如果超过一定间未接收数据,则关闭连接。 3. **客户端错误处理**:如果是客户端发起的请求导致的`ECONNRESET`,确保客户端正确地关闭连接,避免意外断开。 4. **检查网络状况**:确认网络环境稳定,并且双方都可以正常访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值