📜  端口已在使用节点 js - Javascript (1)

📅  最后修改于: 2023-12-03 15:41:06.557000             🧑  作者: Mango

端口已在使用节点 js - Javascript

在进行 Node.js 项目开发时,常常会遇到端口已被使用的问题。这种情况通常会出现在尝试启动一个新的 Node.js 应用程序或尝试重新启动已经运行的 Node.js 应用程序时。当我们启动 Node.js 应用程序时,系统将会为它分配一个监听IP地址和端口。当另一个应用程序尝试使用相同的IP地址和端口时,系统会报错,提示端口已在使用。

如果您遇到这个问题,可以按照以下几步解决:

步骤一: 确认端口被占用

首先,我们需要确认端口是否被占用。有两种方法可以做到这一点。在 Windows 系统中,可以使用 Command Prompt 进行检查。在 Linux 和 Mac 系统中,可以使用 Terminal 进行检查。我们以 Linux 系统为例。

打开一个终端,输入以下命令:

sudo lsof -i :<port>

其中,""是你尝试启动 Node.js 应用程序时指定的端口号。例如,如果你使用3000端口启动,那么命令应该如下所示:

sudo lsof -i :3000

如果端口被占用,会返回类似下面的信息:

COMMAND    PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node    11111  user1   12u  IPv6 1234567      0t0  TCP *:3000 (LISTEN)

这表示,端口3000已经被进程ID为11111的 node 进程占用。您需要先终止该进程才能重新启动应用程序。

步骤二: 终止进程

在命令行中按下"ctrl+c"或关闭终端并不一定停止 Node.js 应用程序中的进程(尤其是在 node 应用作为守护进程或后台任务运行时)。如果无法通过这种方式终止进程,请采取以下步骤:

在 Linux 或 macOS 中,可以通过 kill 命令杀死进程。在 Windows 中,可以通过Ctrl + Shift + ESC 打开任务管理器,找到 node 进程并结束它。如果你想一次结束所有进程:

在 Linux Or macOS:

sudo killall node

在 Windows:

taskkill /F /IM node.exe
步骤三: 重新启动应用程序

确认端口不被占用后,再次启动应用程序。如果该端口已经被占用,您将需要更改该应用程序的监听端口。有几种方法可以更改 Node.js 应用程序的监听端口,您可以将其作为参数传递给应用程序,或者在代码中指定端口号。例如:

将端口号作为参数传递:

node app.js 4000

在代码中设置端口号:

const port = 4000;
app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});
总结

如果您在使用 Node.js 应用程序时遇到端口已被占用的问题,您可以通过以下步骤解决:

  1. 确认端口是否被占用
  2. 终止进程
  3. 重新启动应用程序

只要您按照上述步骤操作,就可以顺利启动您的 Node.js 应用程序。