ERRADDRINUSE错误简介
启动或重新启动 Web 服务器时通常会遇到此错误。它表明服务器正在尝试侦听已被其他应用程序占用的端口上的连接。
报错信息
Error: listen EADDRINUSE: address already in use :::3001 at Server.setupListenHandle [as _listen2] (node:net:1330:16) at listenInCluster (node:net:1378:12) at Server.listen (node:net:1465:7) at Function.listen (/home/ayo/dev/demo/node_modules/express/lib/application.js:618:24) at Object.<anonymous> (/home/ayo/dev/demo/main.js:16:18) at Module._compile (node:internal/modules/cjs/loader:1103:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) Emitted 'error' event on Server instance at: at emitErrorNT (node:net:1357:8) at processTicksAndRejections (node:internal/process/task_queues:83:21) { code: 'EADDRINUSE', errno: -98, syscall: 'listen', address: '::', port: 3001 }
解决方案
解决此错误的最简单方法是将应用程序配置为侦听不同的端口(最好通过更新环境变量)。但是,如果您需要正在使用的特定端口,您可以通过以下命令找到使用该端口的应用程序的进程 ID:
lsof -i tcp:3000
输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 2902 ayo 19u IPv6 781904 0t0 TCP *:3001 (LISTEN)
PID然后,通过将值传递给命令来终止进程kill:
kill -9 2902
运行上述命令后,应用程序将被强制关闭,从而释放所需的端口以供您使用。
补充方案
ERRADDRINUSE错误解析与解决
在启动或重启Web服务器时,我们经常会遇到ERRADDRINUSE错误。这个错误表明服务器试图在一个已经被其他应用程序占用的端口上监听连接。要解决这个问题,我们可以采取以下措施。
步骤1
首先,最简单的解决方法是配置应用程序在不同的端口上监听(最好通过更新环境变量)。但是,如果您确实需要使用当前被占用的特定端口,可以通过以下命令找到使用该端口的应用程序的进程ID:
netstat -tuln | grep :端口号
将“端口号”替换为您需要的端口号。运行此命令后,您将看到使用该端口的应用程序的进程ID。
步骤2
然后,您可以使用以下命令终止该进程:
kill 进程ID
将“进程ID”替换为实际的进程ID。这样,您就可以释放被占用的端口,然后重新启动您的Web服务器。
总结
ERRADDRINUSE错误是由于服务器试图在已被其他应用程序占用的端口上监听连接而产生的。解决这个问题的方法包括配置应用程序在不同的端口上监听或找到并终止占用端口的应用程序。希望这些方法能帮助您解决ERRADDRINUSE错误。文章来源:https://www.toymoban.com/article/469.html
文章来源地址https://www.toymoban.com/article/469.html
到此这篇关于ERRADDRINUSE错误解析与解决:轻松解决Web服务器端口冲突问题的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!