![](/img/trans.png)
[英]Error: listen EADDRINUSE: address already in use :::3001 [Nodemon, Node.js]
[英]Node.JS with Express: Error : listen EADDRINUSE: address already in use
我目前正在尝试使用 Node.js 和 Express 构建一个简单的 CRUD API。 我通常没有问题,但是今天开始出现新的错误消息。
我可以使用一次 TCP 端口。 如果服务器停止并重新启动,它会给我这个错误:
错误:监听EADDRINUSE:地址已在使用3111;
我可以更改端口,但只能使用新端口一次。 给我的代码如下:
// Load packages
const express = require("express");
const formidable = require("express-formidable");
const mongoose = require("mongoose");
const cors = require("cors");
// Initialize serve;
require("dotenv").config();
const mongoURL = process.env.DATABASE_URI;
const app = express();
app.use(formidable());
app.use(cors());
// Connect to the database
mongoose.connect(`${mongoURL}/Some_database`, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// Get all non-existent routes
app.all("*", (req, res) => {
res.status(404).json({ message: "Ressource not found" });
});
// Launch server
app.listen(process.env.PORT, () => {
console.log("Server launched");
});
我使用npx nodemon index.js
启动服务器。
我已经尝试使用sudo lsof -i tcp:3111
以及killall -9 node
的询问端口获取进程ID,但我没有得到任何这些命令,最后一个只返回No matching processes belonging to you were found
。
EADDRINUSE 表示listen() 尝试绑定服务器的端口号已被使用。
因此,在您的情况下,必须已经在端口 3111 上运行服务器。 搜索进程ID:
sudo lsof -i:3111
这将列出在此端口上侦听的所有 PID,一旦您拥有 PID,您可以使用以下命令终止它:
kill -9 {PID}
重新启动您的服务器。
你好,谢谢你的回答,巴里奥斯。 很抱歉这个延迟的回复。
我上周找到了解决方案; 对于可能遇到相同问题的人,我将从回答评论开始。 首先,我正在使用 MacOS Big Sur 11.2.3。
我在发布之前尝试了sudo lsof -i:3111
,但在此端口上没有找到服务器,我找不到使用kill -9
命令终止的 ID。
好吧,通常,原因很简单,我在使用npm init -y
初始化我的项目时一定搞砸了,并且没有创建 node_module 目录,每次我启动服务器时,都会使用端口号创建一个隐藏文件就像它的名字一样,只要它在那里,我就不能使用相关的端口。
很抱歉在这个问题上浪费时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.