Node.js连接MongoDB报错MongoNetworkError: connect ECONNREFUSED ::1:27017求助
嘿,Sharon,我之前重装系统后也碰到过完全一样的问题!别慌,咱们一步步来排查解决:
先确认MongoDB服务是否正常启动
Windows用户可以按下Win+R输入services.msc打开服务管理器,找到MongoDB相关的服务,看看状态是不是“正在运行”;Linux/macOS用户可以用命令sudo systemctl status mongod(Linux)或者brew services list(macOS用brew安装的情况)来检查。如果服务没启动,手动启动就行——Windows右键点服务选“启动”,Linux用sudo systemctl start mongod,macOS用brew services start mongodb-community。检查连接字符串的IP设置
重装系统后可能IPv6的优先级变高了,localhost会解析到IPv6地址::1,但MongoDB默认可能没开启IPv6监听。你可以试试把Node.js里的连接字符串改成mongodb://127.0.0.1:27017,强制用IPv4连接;或者修改MongoDB的配置文件(mongod.conf),添加net.ipv6: true后重启服务,这样就能支持IPv6连接了。排查防火墙是否拦截了端口
重装系统后防火墙规则可能被重置,导致27017端口被挡住。Windows可以打开「Windows Defender防火墙」,添加一条入站规则允许27017端口的通信;Linux用sudo ufw allow 27017来开放端口;macOS则在「系统偏好设置-安全性与隐私-防火墙」里,把MongoDB程序添加到允许通信的列表中。确认MongoDB配置的绑定IP
打开MongoDB的配置文件(mongod.conf),找到net部分的bindIp配置,如果它被设成了某个特定的外部IP,而不是0.0.0.0(允许所有IP访问)或者127.0.0.1(仅限本地访问),那本地就连接不上。把bindIp改成0.0.0.0或者127.0.0.1,然后重启MongoDB服务试试。用MongoDB Shell测试本地连接
打开命令行输入mongosh(新版本)或者mongo(旧版本),看看能不能直接连上MongoDB的shell。如果shell能正常连接,那问题大概率出在Node.js的代码或者依赖上,可以试试重新安装mongoose等依赖(npm install mongoose);如果shell也连不上,那还是回到前面的步骤,检查MongoDB服务和配置的问题。
备注:内容来源于stack exchange,提问作者Sharon Isabela

