Windows环境下Node.js连接本地MongoDB 6.0失败求助
解决Node.js连接本地MongoDB 6.0出现ECONNREFUSED ::1:27017的问题
问题根源
报错里的::1是IPv6的本地回环地址,你的Node应用解析localhost时优先使用了IPv6,但MongoDB默认可能只监听了IPv4的127.0.0.1,导致连接被拒绝。而MongoDB Compass能正常连接,是因为它默认优先用IPv4解析localhost。
快速解决方案
直接修改连接字符串,把localhost换成127.0.0.1,强制使用IPv4连接:
MongoClient.connect("mongodb://127.0.0.1:27017/ecommerce", { useNewUrlParser:true,useUnifiedTopology:true },(err)=>{ if(err){ console.log("connection failed") console.log(err) }else{ console.log("sucessfully connected") } })
可选方案(启用MongoDB的IPv6监听)
如果你想保留localhost作为连接地址,可以修改MongoDB的配置文件:
- 找到MongoDB安装目录下的
mongod.cfg(通常在C:\Program Files\MongoDB\Server\6.0\bin) - 找到
net配置段,修改或添加bindIp配置:
或者直接设置net: port: 27017 bindIp: 127.0.0.1,::1 # 同时监听IPv4和IPv6bindIpAll: true(允许所有IP访问,本地开发环境可用) - 重启MongoDB服务:打开命令提示符,执行
net stop MongoDB,再执行net start MongoDB
代码冗余清理
你的代码里const mongoose = require('mongodb');这行完全没用,因为你使用的是MongoClient而非Mongoose框架,可以直接删除这行,减少不必要的依赖加载。
验证步骤
修改完成后,重新运行node index.js,如果控制台输出sucessfully connected,说明连接成功。
内容的提问来源于stack exchange,提问作者tammuz
相关产品推荐
相关产品推荐

