📌  相关文章
📜  EADDRINUSE,地址已在使用 - 终止服务器 (1)

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

EADDRINUSE,地址已在使用 - 终止服务器

当我们需要开启一个服务器时,常常会遇到地址已经被占用的情况,这时候就会抛出 EADDRINUSE 的错误。这个错误表示我们开启的端口号已经被其他应用所占用,我们需要更换端口号或者关闭占用该端口的应用。

常见原因
  • 端口号已经被其他进程占用
  • 在开启服务器的过程中,发现服务器在之前的未正常关闭
解决方案
1. 换端口号

在程序中更换一个未被占用的端口号是最简单的解决方法,通过修改代码中的端口号即可。修改后,重新启动即可。

const http = require('http');
const PORT = 3000;

http.createServer((req, res) => {
  res.end('Hello World!');
}).listen(PORT, () => console.log(`Server started on port: ${PORT}`));
2. 杀死占用端口的进程

在一些情况下,我们并不能更换端口,例如我们正在运行的服务需要特定的端口号。这时候,我们需要找到占用该端口的进程,并杀死该进程。

Windows 系统下,我们可以通过 Netstat 命令查看端口占用情况,并根据 PID 查找进程。使用 taskkill 命令杀死进程。命令示范:

netstat -ano | findstr :<PORT>
taskkill /PID <PID> /F

Linux 或 Mac 系统下,我们可以通过 lsof 命令查找占用进程。使用 kill 命令杀死进程。命令示范:

lsof -i:<PORT>
kill -9 <PID>
总结

当发现 EADDRINUSE 错误时,不要慌张,先检查是否有端口号冲突问题。如果有,可以尝试更换端口号;如果不能更换,则需要找到占用该端口的进程并杀死进程。