node连接MongoDB数据库错误:MongoServerSelectionError: connect ECONNREFUSED ::1:27017

一、问题描述

描述:使用node连接MongoDB数据库时发生报错,MongoServerSelectionError: connect ECONNREFUSED ::1:27017
如图所示:
在这里插入图片描述

二、原因查找

前提条件:MongoDB数据库的服务已成功启动。
在这里插入图片描述

通过查找资料发现,报错原因是nodejs在后台使用 ipv6,所以 localhost 不是指向 127.0.0.1 而是指向 :::1。

三、解决办法

1.降级node版本到16以下,包含16;
2.url使用ip mongodb://127.0.0.1:27017/xxx。

通过实践证明:
如果node版本在16及以上则选择方法一,否则方法二仍会出现同样的报错信息,此时选择方法一。

四、node版本降级

这里选择NVM管理node来重新下载node。

1.将原安装node的文件夹中的文件全部删除;
2.通过控制面板卸载node程序;

3.下载NVM管理工具: https://github.com/coreybutler/nvm-windows/releases
在这里插入图片描述

4.解压缩该zip文件夹并安装nvm管理工具(自由选择安装路径)。并验证nvm是否安装成功。
在这里插入图片描述

在这里插入图片描述

5.安装node.js
(1) 在命令行工具中输入nvm ls available,查看node.js的版本号:
查看地址:https://nodejs.org/en/download/releases
在这里插入图片描述

注意: 我们要下载的是16以下的node版本,但是上图没有,可以通过底部提示的网址查看完整的版本信息以及对应的npm版本(后面会用到):
在这里插入图片描述

(2) 在命令行输入:nvm install node版本号 下载安装node;如:node install 15.14.0
安装成功后,输入:nvm use node版本号,表示当前你要使用这个版本的node。
验证node是否安装成功:
在这里插入图片描述

(3) 验证npm是否安装:
在这里插入图片描述
如图,表明当前我们安装的node没有自动安装npm包。

(4) 安装npm。下载对应node版本的npm版本:
在这里插入图片描述
查看node版本对应的npm版本:https://nodejs.org/zh-cn/download/releases/
(该网址已失效,更新为:https://nodejs.org/en/download/package-manager)
npm下载地址:http://npm.taobao.org/mirrors/npm/

如:node15.14.0版本对应的npm版本为7.7.6
在这里插入图片描述
在这里插入图片描述

(5) 下载完成后解压到nvm安装目录的对应node版本的node_modules目录下,并将文件名改为npm:
在这里插入图片描述

(6) 将npm中bin目录下的npm文件和npm.cmd文件复制粘贴到node版本的根目录下:
在这里插入图片描述

(7) 验证npm是否安装成功:
在这里插入图片描述

(8) 为node.js配置环境变量:此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量 -> path -> 编辑 -> 新建 -> node的安装路径
在这里插入图片描述
在这里插入图片描述
注意: 需重启vscode再运行node连接数据库。
在这里插入图片描述

五、使用nvm切换node版本

在命令行运行nvm ls可查看已安装的node版本:
在这里插入图片描述
运行nvm use 15.14.0(15.14.0为你想要切换的node版本)即可切换。
在这里插入图片描述
如果你需要切换到的版本尚未安装,你可以先安装该版本。例如,如果你想安装 Node.js 版本 14.17.0,可以使用以下命令:
nvm install 14.17.0
最后使用node -v查看node版本是否切换成功。注意:切换node后或许需要重新打开命令行查看node版本。若还是没有切换成功,则查看node的环境变量是否设置正确。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laker 23

要秃啦,支持一下嘛~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值