连接到 MongoDB Atlas 时如何修复“错误:querySrv EREFUSED”?

新手上路,请多包涵

我是 MongoDB 4.0.6 的新手,并尝试使用 Node/Express.js 将其实现到我的网站中,但是当我尝试连接到 mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main 时,我收到了这个错误:

{ 错误:QueryReqWrap.onresolve 处的 querySrv EREFUSED _mongodb._tcp.main-03xkr.mongodb.net [as oncomplete] (dns.js:199:19) 错误:’EREFUSED’,代码:’EREFUSED’,系统调用:’querySrv’ ,主机名:’_mongodb._tcp.main-03xkr.mongodb.net’}

我已经尝试连接到 mongodb://localhost:27017/main ,但这似乎 确实 有效。

以下是相关代码:

 require('dotenv').config();
const mongoose = require('mongoose');

// Database
const uri = `mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;
const localURI = 'mongodb://localhost:27017/main';

var Project = require('./models/project');

mongoose.connect(uri, { useNewUrlParser: true });
const db = mongoose.connection;

db.once('open', () => console.log('Successfully connected to MongoDB'));
db.on('error', (e) => console.log(e));

// Routes
app.get('/', (req, res) => {
  Project.find({}, (e, projects) => {
    if (e) console.log(e);

    res.render('home.ejs', {
      projects: projects
    });
  });
});

那么有谁知道如何解决这个错误并解释这里发生了什么?

原文由 Noodles 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

如果您遇到此错误,请尝试对 Node.js 2.2.12 或更高版本使用较旧的连接字符串:

 mongodb://<username>:<password>@main-shard-00-00-03xkr.mongodb.net:27017,main-shard-00-01-03xkr.mongodb.net:27017,main-shard-00-02-03xkr.mongodb.net:27017/main?ssl=true&replicaSet=Main-shard-0&authSource=admin&retryWrites=true

根据 MongoDB,由于 Mongoose,SRV 可能无法正常工作。

原文由 Noodles 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在连接 Node 版本 3.0 or later 时遇到了同样的错误,我通过降级到 2.2.12 or later 版本解决了这个问题

降级

原文由 Joseph Kasule 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题