📌  相关文章
📜  听 EADDRINUSE:地址已在使用中 (1)

📅  最后修改于: 2023-12-03 14:50:41.935000             🧑  作者: Mango

监听 EADDRINUSE: 地址已在使用中

当一个程序试图绑定一个已被占用的端口时,将会抛出 EADDRINUSE 错误。这表示另一个程序正在使用该端口,因此新程序不能将其用于创建一个新的服务。

错误详情

当出现 EADDRINUSE 错误时,通常伴随着以下信息:

Error: listen EADDRINUSE: address already in use 0.0.0.0:3000

其中,3000 是正在使用的端口号。这个错误可以被 Node.js 异常捕获。

如何解决 EADDRINUSE 错误

在解决 EADDRINUSE 错误之前,要先确定哪个程序占用了该端口。可以通过以下两种方式来查找:

  1. 使用 lsof 命令

运行以下命令以找到正在运行的程序和端口号:

lsof -i :3000

如果结果返回空,则该端口当前没有被占用。

  1. 使用 netstat 命令

运行以下命令以找到正在运行的程序和端口号:

netstat -ano | grep 3000

其中,3000 是要查找的端口号。如果没有结果返回,则该端口当前没有被占用。

一旦确定了哪个程序占用了该端口,就可以终止该程序,或者将新程序绑定到另一个可用的端口上。

预防措施

为避免出现 EADDRINUSE 错误,可以采取以下措施:

  1. 避免硬编码端口号,而是使用环境变量或配置文件中的值,以便轻松更改端口。

  2. 在绑定端口之前,先检查该端口是否已被占用。可以使用 lsofnetstat 命令来完成这个任务。

  3. 在应用程序中使用信号处理程序。如果程序无法正常退出,则可以捕获 SIGINTSIGTERM 信号,并且在关闭服务器之前释放已占用的端口。