MongooseServerSelectionError:CONNECT ECONNREFUSED::1:27017

tv6aics1  于 2022-10-22  发布在  Go
关注(0)|答案(7)|浏览(276)

当我尝试用Mongoose连接我的应用程序和数据库时,我遇到了一个问题。我已经尝试了以下我在谷歌上找到的解决方案:

  • 重启Windows上的MongoDB服务
  • 手动打开数据库,cmd位于MongoDB的bin文件中

但我解决不了这个问题。有谁能帮帮我吗?

//my connection
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/notes-db-app',{
    useNewUrlParser: true, 
    useUnifiedTopology: true
})
.then(db => console.log('DB is connected'))
.catch(err => console.log(err));

抛出的是我,这个错误
MongooseServerSelectionError:CONNECT ECONNREFUSED::1:27017 at NativeConnection.Connection.OpenUri(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\connection.js:797:32)at C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\index.js:330:10 at C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5()at new Promise()at Promise或Callback(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)在Mongoose。_Promise或Callback(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\index.js:1151:10)在Mongoos.连接(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\index.js:329:20)在Object。(C:\Users\ivan\Desktop\NodeJS\notes-app\src\db.js:3:10)
在模块._编译(节点:内部/模块/cjs/加载程序:1095:14)在对象模块._扩展..js(节点:内部/模块/cjs/加载程序:1147:10){
原因:拓扑描述{类型:‘未知’,服务器:Map(1){‘本地主机:27017’=>[服务器描述]},陈旧:假,兼容:真,心跳频率:10000,本地阈值:15,逻辑会话超时分钟:未定义}}
我尝试将端口放在我的连接代码上,如下所示

//my connection
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/notes-db-app',{
    useNewUrlParser: true, 
    useUnifiedTopology: true
})
.then(db => console.log('DB is connected'))
.catch(err => console.log(err));

它给我抛出了另一个错误
MongooseServerSelectionError:消息大小无效:1347703880,允许的最大值:67108864 at NativeConnection.Connection.OpenUri(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\connection.js:797:32)at C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\index.js:330:10 at C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5 at new Promise()at Promise或Callback(C:\USERS\IVAN\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)在Mongoose。_Promise或Callback(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\index.js:1151:10)在Mongoos.连接(C:\Users\ivan\Desktop\NodeJS\notes-app\node_modules\mongoose\lib\index.js:329:20)在Object。(C:\Users\ivan\Desktop\NodeJS\notes-app\src\db.js:3:10)
在模块._编译(节点:内部/模块/cjs/加载程序:1095:14)在对象模块._扩展..js(节点:内部/模块/cjs/加载程序:1147:10){
原因:拓扑描述{类型:‘未知’,服务器:Map(1){‘本地主机:3,000’=>[服务器描述]},陈旧:假,兼容:真,心跳频率:10000,本地阈值:15,逻辑会话超时分钟:未定义}}

vshtjzan

vshtjzan1#

const uri = 'mongodb://localhost:27017/test';

const options = {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    serverSelectionTimeoutMS: 5000,
    autoIndex: false, // Don't build indexes
    maxPoolSize: 10, // Maintain up to 10 socket connections
    serverSelectionTimeoutMS: 5000, // Keep trying to send operations for 5 seconds
    socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
    family: 4 // Use IPv4, skip trying IPv6
}

const connectWithDB = () => {
    mongoose.connect(uri, options, (err, db) => {
      if (err) console.error(err);
      else console.log("database connection")
    })
}

connectWithDB()
z18hc3ub

z18hc3ub2#

我终于解决了这个问题。
开启MongoDB默认关闭的IPv6。在CMD上使用以下命令行:

mongod --ipv6

然后再次尝试连接,它就能正常工作了!

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/notes-db-app',{
    useNewUrlParser: true, 
    useUnifiedTopology: true
})
.then(db => console.log('DB is connected'))
.catch(err => console.log(err));

代表提问者发帖

ejk8hzay

ejk8hzay3#

如果错误显示:
Connect()错误:MongooseServerSelectionError:CONNECT ECONNREFUSED::1:27017
则在IPv6地址**::1上拒绝连接到本地主机**。Mongoose默认使用IPv6。
为了快速检查,您可以显式设置IPv4地址:

mongoose.connect('mongodb://127.0.0.1/test')
oo7oh9g9

oo7oh9g94#

只需传递第三个参数family:4即可。

mongoose.connect('mongodb://localhost/notes-db-app',{
    useNewUrlParser: true, 
    useUnifiedTopology: true,
    family: 4,
})
sf6xfgos

sf6xfgos5#

可能您要连接的服务器的主机名/IP设置不正确。
我习惯于把这个错误看作是:

MongooseServerSelectionError: connect ECONNREFUSED <hostname/hostIP>:<port>

在您发布的控制台日志中,<hostname/hostIP>部分格式错误/缺失。

  • 示例*-对于在27017端口上本地运行的MongoDB服务器,当服务器停机时,错误如下:
MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017

如果您使用MongoDB URI连接到数据库,请确保它如下所示

"mongodb://<hostname/hostIP>:<port>"
7y4bm7vi

7y4bm7vi6#

1.打开您的终端并输入命令:mongod
1.然后使用您的app.js通过编写以下代码建立连接:

const mongoose=require("mongoose");
mongoose.connect('mongodb://localhost/notes-db-app',{
    useNewUrlParser: true, 
    useUnifiedTopology: true,
    family: 4,
})

1.现在已经完成了。只需打开您的mongo外壳或MongoDB指南针,查找您添加的内容。

9fkzdhlc

9fkzdhlc7#

我也面临着那些命令对我起作用的相同问题(Ubuntu机器)

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

然后

sudo service mongod restart

相关问题