javascript - 带有 Express 的 Node.JS:错误:监听 EADDRINUSE:地址已在使用中
问题描述
我目前正在尝试使用带有 Express 的 Node.js 构建一个简单的 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
.
我已经尝试使用请求端口获取进程 ID sudo lsof -i tcp:3111
,以及killall -9 node
,但是我没有得到任何这些命令,最后一个只返回No matching processes belonging to you were found
。
解决方案
你好,谢谢你的回答,巴里奥斯。很抱歉这个延迟的回复。
我上周找到了解决方案;对于可能遇到相同问题的人,我将从回答评论开始。首先,我正在使用 MacOS Big Sur 11.2.3。
我尝试了sudo lsof -i :3111
之前的发布,但是在这个端口上没有找到服务器,我找不到用kill -9
命令终止的 ID。
好吧,通常,原因很简单,我在初始化我的项目时一定搞砸了,npm init -y
并且没有创建 node_module 目录,每次我启动我的服务器时,都会创建一个隐藏文件,并以端口号作为其名称和只要它在那里,我就无法使用关联的端口。
很抱歉在这个问题上浪费时间。
推荐阅读
- javascript - 如何将 Javascript DataView 对象转换回 python 字节类型?
- amazon-web-services - AWS RDS Aurora - 跨区域只读副本同时具有写入和读取实例?
- css - ReactJS 过渡不适用于类或模块。任何提示
- java - @AutoValue 编译失败:方法不对应于的属性
- google-analytics - 使用 Measurement Protocol 向 Google Analytics 4 发送事件时,client_id 应该是什么?
- postgresql - 在 PGSQL 中通过合并处理布尔的空字符串
- javascript - 未捕获的类型错误:无法读取本地主机上未定义的属性“添加”-Wordpress
- r - 如何计算观察值之间的方差,当观察值是矩阵形式时
- python - 破折号 daterangepicker 日历与下面的组件重叠
- html - 填充到父 div 或锚定 div