MongoNetworkError:首次连接时无法连接到服务器[localhost:27017] [MongoNetworkError:connect ECONNREFUSED 127.0.0.1:27017]

Kar*_*Haj 26 mongodb node.js express

我是nodeJS的新手,通过关注youtube上的预告片开始学习,一切顺利,直到我添加连接功能,如果是mongodb,

mongo.connect("mongodb://localhost:27017/mydb")
Run Code Online (Sandbox Code Playgroud)

当我在cmd(node start-app)上运行我的代码时,得到以下错误,

MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
Run Code Online (Sandbox Code Playgroud)

有人能解释我错过了哪一步吗?我的代码:

var express = require("express");
var MongoClient = require('mongodb');
var url = "mongodb://localhost:27017/mydb";
var webService = require("./webService");
var server = express();

MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    console.log("Database created!");
    db.close();
});

server.use(express.urlencoded({ extended: true }));

server.set('views', __dirname);

server.get('/', function (request, response) {
    response.sendFile(__dirname + '/MainPage.html');
});

server.get('/Sign', function (request, response) {
    response.render(__dirname + '/Sign.ejs');
});

server.post("/signUp", webService.signUp);

server.post("/createUser", webService.createUser);

server.listen(5500);
Run Code Online (Sandbox Code Playgroud)

Vis*_*hnu 18

您必须MongoDB先在系统中安装数据库服务器并启动它.

使用以下链接进行安装 MongoDB

https://docs.mongodb.com/manual/installation/


Ste*_*eve 9

您的 IP 地址可能已更改。

如果您最近重新启动了调制解调器,这会更改可能已在 Atlas 上列入白名单的 IP。

Soooo,您需要跳回 Atlas 并将您的新 IP 地址添加到安全>网络访问下的白名单。


小智 8

在尝试了每个解决方案之后,google提出了堆栈溢出问题,我发现了我的特殊问题。很久以前,我已经编辑了hosts文件,以允许我从virtualbox访问本地主机。

删除此条目为我解决了该问题,并通过上述解决方案中提供的链接正确安装了mongoDB,并包括正确的Promise处理代码:

mongoose.connect('mongodb://localhost/testdb').then(() => {
console.log("Connected to Database");
}).catch((err) => {
    console.log("Not Connected to Database ERROR! ", err);
});
Run Code Online (Sandbox Code Playgroud)


小智 7

他们中的许多人没有添加此内容,尤其是在AWS EC2实例中,我遇到了相同的问题并尝试了不同的解决方案。解决方案:代码中我的数据库URL之一缺少此参数“ authSource”,因此添加了此功能。

mongodb://myUserName:MyPassword@ElasticIP:27017/databaseName?authSource=admin
Run Code Online (Sandbox Code Playgroud)

  • 这救了我的命……几天来我一直在试图解决这个问题。那 ```?authSource=admin``` 就是为我做的!!!!! (7认同)

Kei*_*DOG 6

按照上面@CoryM 的回答背后的逻辑:

在尝试了谷歌提出的关于堆栈溢出的每个解决方案后,我发现了我的特殊问题。我很久以前编辑过我的主机文件,以允许我从我的虚拟机访问我的本地主机。

删除此条目为我解决了它...

2 个月前,我也为 Python 机器学习设置编辑了我的主机文件。因此,我没有因为我仍然需要它而将其删除,而是使用127.0.0.1了 代替localhost并且它起作用了:

mongoose.connect('mongodb://127.0.0.1/testdb')
Run Code Online (Sandbox Code Playgroud)


Pri*_*pal 5

这发生在我身上,我发现这是因为互联网连接错误。如果我在我的地方使用公共 wifi,出于安全原因阻止了各种网站,Mongo 拒绝连接。但是如果我要使用自己的移动数据,我可以连接到数据库。

  • 如果您已在“安全”>“网络访问”>“IP 白名单”下将 IP 地址列入白名单,然后尝试从其他 IP 地址进行连接,Mongo 将阻止该连接。这是一项安全功能,可确保只有受信任的 IP 才能连接到数据库。您只需转到 Mongo DB Atlas 站点的上述部分,并将您当前的 IP 地址(永久或临时)添加到白名单中,或暂时允许从任何地方进行访问(即所有 IP 地址为 0.0.0.0/0)。出于明显的安全原因,不建议您永久允许从任何地方进行访问。 (3认同)

nag*_*han 5

我遇到了同样的问题,但是花了很多RND。我发现问题出在哪里,因此请在您的终端上运行此命令。

sudo服务mongod启动