Node.js+MongoDB Windows环境安装

167 阅读2分钟

一,下载node及MongoDB

  1. Node.js选版本下载:

nodejs.org/en/download…

2.MongoDB选版本下载:

www.mongodb.com/try/downloa…

安装完成后直接点击bin目录中的mongod.exe,启动即可运行服务。

安装教程详见:

在Windows上安装_MonogDB 中文网

二,安装PM2:

  1. 使用运行窗口以管理员身份运行PowerShell

第1步: 同时按下Windows + R键以弹出“运行”对话框。

第2步: 在框中键入PowerShell,然后单击OK(确定)按钮。 普通的Windows PowerShell将以当前用户身份启动。

第3步: 键入如下命令,然后按“enter”键。

start-process PowerShell -verb runas

第4步: 以上命令将以管理员身份提升Windows PowerShell的权限。

2.管理员cmd窗口运行:

npm install pm2 -g

3.安装windows自启动包:

npm install pm2-windows-startup -g

4.执行命令:

pm2-startup install

5.查看是否安装成功:

pm2 -v

三,数据备份及还原

scp数据库备份文件到本地,windows用robo3T直接import界面功能将bson文件导入本地数据库

四,启动服务

启动node服务遇到:

MongoError: Unsupported OP_QUERY command: listIndexes. 
The client driver may require an upgrade. 
For more details see https://dochub.mongodb.org/core/legacy-opcode-removal

查看dochub.mongodb.org/core/legacy…发现:OP_QUERY命令已经废弃,那就是说mongoose版本过低,和新安装的mongodb版本不兼容导致,我选择将mongo版本降到6.0一下。

截屏2024-08-13 22.45.59.png

重新安装低版本mongo后重启node服务报错:

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017

查到资料:

上面出现的 ::1 是 ipv6 的 localhost 地址,但是 mongoDB 是在 127.0.0.0:27017上侦听的,(ipv4的 localhost(127.0.0.1)),所以连接 ::1:27017 会失败。
所以要想连接 mongodb 数据库成功,必须将服务器中 ipv6 的 localhost 修改为 ipv4 的 localhost。但是要想修改成功,这里会有一个 ipv6 与 ipv4 在我们服务器的优先级问题。
所以,下面推荐一篇修改 ipv6 与 ipv4 的优先级文章,按照这篇文章修改即可解决连接本地mongo数据库失败:connect ECONNREFUSED ::1:27017 的问题。
win10 localhost 解析为::1 的解决办法

node.js 18默认使用ipv6,我没有选择采用使用高版本node并解决::1问题的解决方式,而是降低node.js版本到16以下(包含16)来解决问题。

至此,服务成功重启。

五,总结

windows自带的powershell权限太低,好多linux下加个sudo就能运行的命令,windows都需要在管理员powershell中才能完成,这点让我很不习惯。

另外,下载个软件太多的关联下载,比如下载mongo竟然默认关联mongo compass,这让我很不舒服。mac 用命令行就很方便,没有这么多事。

值得一提的是windows版本的Robo3t确实比mac版强大很多,多了很多图形化的傻瓜操作,确实不错。