Node.js 报错 Error: listen EADDRINUSE 如何处理?

阅读时长 3 分钟读完

在使用 Node.js 开发 Web 应用时,我们有时会遇到 Error: listen EADDRINUSE 的错误信息。这个错误通常表示端口已被占用,导致当前应用无法启动服务。本篇文章将详细介绍如何处理这个问题。

1. 错误原因

当一个应用程序(比如另外一个 Node.js 服务)已经在使用指定端口时,再次尝试监听同一个端口时就会报 EADDRINUSE 错误。例如,在端口号为 3000 上启动了一个 Web 服务器,然后使用相同的端口在同一台机器上尝试启动另一个 Web 服务器,就会发生此错误。

2. 解决方法

2.1. 查找端口占用进程并关闭

首先,可以使用以下命令查找当前正在使用该端口的进程:

运行该命令后,会显示类似以下内容:

上述示例中,PID 为 1234 的进程占用了 3000 端口。可以结束该进程以释放端口:

以上命令将向进程发送强制终止信号,需要注意的是,如果该进程正在处理一些重要数据,这种方式可能会导致数据损坏或丢失。

2.2. 修改应用监听的端口

另一种解决 EADDRINUSE 错误的方法是修改应用程序使用的端口。例如,将原先监听的 3000 端口改为 3001

-- -------------------- ---- -------
----- ---- - ----------------

----- ---- - -----

-- ---

------------------- -- -- -
  ------------------- -- --------- -- ---- ----------
---

上述代码将应用程序的监听端口从 3000 改为了 3001

2.3. 避免重复启动服务

在实际开发中,我们通常会使用 PM2 或类似工具来管理 Node.js 进程。这些工具都提供了自动重启进程、监控进程状态等功能,能够大大方便我们的开发和部署流程,并且不容易出现相同端口被占用的问题。

3. 总结

Error: listen EADDRINUSE 是一个比较常见的错误,通常是由其他应用程序或进程占用指定端口而导致的。解决这个问题的方法有很多种,大多数情况下可以通过查找并关闭占用该端口的进程、修改应用程序使用的端口等方式解决。为了避免这种错误,我们可以使用一些工具来自动化管理 Node.js 进程,并且需要仔细规划和调试应用程序代码,以确保不会意外重复启动服务。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651ba23495b1f8cacd345e86

纠错
反馈