NodeJS连接MongoDB报ECONNREFUSED ::1:27017错误如何解决
问题根因
你使用的Node.js v17及以上版本默认优先将localhost解析为IPv6本地地址::1,但你本地MongoDB服务仅监听IPv4的127.0.0.1地址,所以连接请求被拒绝。你用Mongo Shell连接时指定的是127.0.0.1所以能正常连通,代码中写localhost就会触发解析到IPv6的问题。
解决方案
可任选以下任意一种方案修改后重启项目即可正常连接:
- 方案一:修改
database.js中的MongoDB连接地址,把mongodb://localhost:27017替换为mongodb://127.0.0.1:27017,修改后代码如下:
async function connectToDatabase() { const client = await MongoClient.connect('mongodb://127.0.0.1:27017'); database = client.db('file-demo'); }
- 方案二:保留
localhost写法的前提下,在连接参数中指定优先使用IPv4解析:
async function connectToDatabase() { const client = await MongoClient.connect('mongodb://localhost:27017', { family: 4 }); database = client.db('file-demo'); }
- 方案三:如果需要MongoDB支持IPv6连接,可修改MongoDB配置文件中的
bindIp配置,追加::1地址后重启MongoDB服务即可。
内容的提问来源于stack exchange,提问作者Jahn E.
相关产品推荐
相关产品推荐

