Node.js连接MongoDB时遇querySrv EREFUSED错误求助
解决Mongoose连接MongoDB时的querySrv EREFUSED错误
错误详情
Error: querySrv EREFUSED _mongodb._tcp.e-commerce.xocsdrz.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:251:17) { errno: undefined, code: 'EREFUSED', syscall: 'querySrv', hostname: '_mongodb._tcp.e-commerce.xocsdrz.mongodb.net' }
我的连接代码
const mongoose = require('mongoose'); // const dotenv = require("dotenv") // dotenv.config({path:`config/config.env`}); // const DB = process.env.DB; // console.log(DB); const connectDatabase = () => { mongoose .connect( 'mongodb+srv://Karishma:<password>@e-commerce.xocsdrz.mongodb.net/?retryWrites=true&w=majority', {} ) .then((data) => { console.log(`mongoDb connected with the server:${data.connection.host}`); }) .catch((err) => { console.log(err); }); }; module.exports = connectDatabase;
排查与解决方法
- 检查网络与DNS配置:该错误是DNS查询被拒绝导致,大概率是当前网络(如公司内网、校园网)限制了SRV记录查询。可切换到手机热点等不受限网络,或把本地DNS改为公共DNS(如8.8.8.8)重试。
- 确认MongoDB Atlas集群状态:登录MongoDB Atlas控制台,检查
e-commerce集群是否正常运行,没有被暂停、删除或处于维护状态。 - 更换连接字符串格式:若SRV格式连接失败,可在Atlas控制台生成非SRV格式连接字符串。操作步骤:进入集群→点击"Connect"→选择"Connect your application"→选择Node.js驱动,取消勾选"Include SRV record",复制生成的标准连接字符串替换现有代码中的地址。
- 验证账号权限与密码:确保连接字符串中的
<password>已替换为真实密码,用户名Karishma是Atlas中已创建的数据库用户,且该用户拥有e-commerce数据库的读写权限。 - 检查IP白名单设置:在Atlas控制台的"Network Access"页面,确认当前设备的公网IP已添加到白名单,或临时添加
0.0.0.0/0(允许所有IP访问)测试是否是IP限制导致连接失败。
内容的提问来源于stack exchange,提问作者Yadav Karishma
相关产品推荐
相关产品推荐

