首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.JS with Express: Error : listen EADDRINUSE:已在使用的地址

Node.JS with Express: Error : listen EADDRINUSE:已在使用的地址
EN

Stack Overflow用户
提问于 2021-05-08 17:24:28
回答 2查看 1.2K关注 0票数 1

我目前正在尝试使用Node.js和Express一起构建一个简单的CRUD。我通常没有麻烦,但今天,一条新的错误信息开始出现。

我可以使用TCP端口一次。如果服务器停止并重新启动,它将给出以下错误:

错误:听EADDRINUSE:地址已经在使用3111;

我可以更改端口,但只能使用新端口一次。给我的代码如下:

代码语言:javascript
运行
复制
// 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

EN

回答 2

Stack Overflow用户

发布于 2021-05-14 21:52:45

EADDRINUSE意味着侦听()尝试将服务器绑定到的端口号已经在使用中。

因此,在您的示例中,必须已经在端口3111上运行了服务器。搜索进程id:

代码语言:javascript
运行
复制
   sudo lsof -i :3111

这将列出在此端口上侦听的所有PID,一旦有了PID,就可以使用以下方法终止它:

代码语言:javascript
运行
复制
kill -9 {PID}

重新启动服务器。

票数 0
EN

Stack Overflow用户

发布于 2021-05-17 11:22:09

你好谢谢你的回答巴里奥斯。抱歉,我的反应太迟了。

我上周找到了解决方案;对于那些可能陷入同样问题的人,我将从回答评论开始。首先,我与MacOS Big 11.2.3合作。

我在投递之前尝试过sudo lsof -i :3111,但是在这个端口上没有找到服务器,我找不到一个ID来终止kill -9命令。

通常情况下,原因很简单,我一定是在用npm init -y初始化我的projet时搞砸了,而且没有创建node_module汇辑,每次我启动服务器时,都会创建一个隐藏文件,其中的端口号是它的名称,只要它在那里,我就不能使用相关的端口。

很抱歉在这个问题上浪费时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67450311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档