nvm

566 阅读7分钟

写此文章的根本目的就是因为最近使用nvm的时候源又又又报错了,网上说的源地址太抽象了,你说是源地址那就是源地址?对初学者来说太不友好了,因此我又重新梳理了一遍知识点并重新输出了和总结了解决办法,如果对你有帮助,可以点点赞撒。

Ciallo~(∠・ω< )⌒★

一、简介

nvm简称为node version manager,也就是所谓的node包管理工具。

nvm出现的原因在于不同的项目会使用不同的node,而在不同的node版本之间切换会非常复杂,通常在实习工作和个人练习以及公司项目中会有对node版本的要求。

比如说以下三种情况:

1.个人练习使用node18.18.0

2.企业实习最新项目用node21.1.0

3.企业老项目维护需要使用node14.16.0

......

基于以上说明的三种情况,反复修改系统的环境变量显然是非常麻烦的,因此就出现了nvm。

二、官网地址

nvm是由国外开源的一个项目

(Linux版本)Github官网地址:github.com/nvm-sh/nvm

(Windows版本)Github官网地址:github.com/coreybutler…

或者直接在github上搜索即可

三、下载与安装(Windows版本)

根据第二节内容访问对应官网,这里以Windows举例:

1.访问官网

点击Releases释放出来的正式版本

选择1.1.12最新的版本就好,在首页这里我们可以看到一些的更新日志

这些更新日志可以帮我们锁定一些信息,比如nvm debug(用来测试配置文件信息是否正确)命令就是1.1.11之后才出现的,如果你安装的1.1.11之前的版本那么就不会有。

2.下载安装包

可以选择两种安装方式,一种是下载源码包进行解压安装,一种是用windows自带的安装器进行安装

3.(第一种方式)安装nvm

使用.exe为后缀的安装器进行安装

4.(第二种方式)安装nvm

待补充

四、启动与配置

1.nvm环境变量配置

在>=1.1.9版本之中,使用windows自带的安装器是会自动帮我们配置环境变量的

在1.1.9的Change Log中有提到

  • Use Windows defined env vars in all paths

但是如果采用第二种方式安装或者使用<1.1.9版本的node是不会自动帮我们配置系统的环境变量

a.查看环境变量是否配置

NVM_HOME配置的是nvm软件的路径

NVM_SYMLINK配置的是nvm链接nodejs的路径

其实配置的就是安装的时候决定的两个路径

2.检测是否安装成功

检测nvm是否安装成功,可以打开powershell或者cmd进行使用(以下内容默认以powershell)举例

PS D:> nvm --version
1.1.12

如果以上命令没有问题,则可以启动nvm

PS D:> nvm on
nvm enabled
No versions of node.js found. Try installing the latest by typing nvm install latest

只要显示nvm enabled则代表启动了nvm

如果显示未知脚本或者显示不知道nvm此命令,但是在刚刚示例中的D:\nvm安装文件夹中存在代码程序,如下:

那么说明没有配置环境变量成功,请重复检查

3.配置下载源

a.明确下载源概念

首先要明确三个概念

nvm作为node的包管理工具,会去下载node

node下载的时候,会去下载一个对应版本的npm

npm去下载开发中的依赖的下载源是不归nvm管理的,例如vite、vue或者常见的sass、express、mockjs

whiteboard_exported_image.png

b.官网配置

凡事必登官网看一眼,官网是最正式的公告

nvm的配置自然要去nvm的github上看一眼

主要看最下面两行

翻译过来就是如果在中国,你的node配置需要设置为*npmmirror.com/mirrors/nod…* npm 下载的镜像源需要设置在 npmmirror.com/mirrors/npm…

c.配置国内node软件源

根据第一阶段所述可以知道,nvm需要两个下载源地址:

node地址

npm地址

配置文件位置在下方所示:

由此官网配置可以得到node配置文件:

node_mirror: https://npmmirror.com/mirrors/node/  

将该配置加入settings.txt文件中

配置后使用命令进行测试:

PS D:> nvm list available

但是在nvm list available后发现严重错误

Get "npmmirror.com/mirrors/nod…": read tcp 192.168.18.98:13090->47.96.233.62:443: wsarecv: An existing connection was forcibly closed by the remote host.

根据错误可知,在访问***npmmirror.com/mirrors/nod…** *时远程主机服务器强行关闭这个链接

大概猜测有三种原因:

①网络下载波动

②主机防火墙不给发送该请求

③阿里关闭了对此链接的访问

但是github官网上依旧挂着这个链接,总之就是官网的更新也不及时,国外开源的软件和国内有信息差,node下载镜像源出错

(由此可明白官网也不一定正确,因此才需要多个开发者多重维护,但官网依旧时更正式的)

(1)自查阿里镜像站

(2)重新配置node源

node_mirror: https://mirrors.aliyun.com/nodejs-release/

重新测试

PS C:> nvm list available

成功!

如果能nvm list available 但是却无法nvm install的话请看第五段中的解决办法

d.配置国内npm软件源

根据官网配置可知npm正常国内镜像源配置

npm_mirror: https://npmmirror.com/mirrors/npm/  

使用nvm >=1.1.11版本可以用,nvm debug进行测试

PS C:> nvm debug

如果两个链接都没有问题的话下方不会检测出来

e.安装node和npm

# 输入自己想要安装的node的版本,它会自动去下载匹配的npm版本
PS C:> nvm install 20.9.0

f.配置国内npm依赖源

根据下载源的示例图可知,虽然知道从国内哪里下载node和npm,但是npm却不知道从国内哪处下载开发依赖,因此需要配置npm依赖仓库下载源,不然默认是国外的源

(1)使用命令行配置

# 查看当前npm依赖源
PS C:\Users\Administrator> npm config get registry
https://registry.npmmirror.com/

# 如果为以上的阿里源镜像的话,那么就是正确的
# 如果不是的话可以通过命令行快速配置
PS C:\Users\Administrator> npm config set registry https://registry.npmmirror.com/

# 然后重新查看一下,看看是否更正过来了
PS C:\Users\Administrator> npm config get registry

(2)修配配置文件进行配置

npm的默认配置文件在C盘当前用户目录下存在,名称叫.npmrc

打开后手动配置就好了

registry=https://registry.npmmirror.com/

4.扩展镜像源

a.腾讯云镜像源

公示网址: cloud.tencent.com/document/pr…

腾讯软件源镜像站: mirrors.cloud.tencent.com(里面可以找到node和npm的地址)

腾讯node镜像源:mirrors.cloud.tencent.com/help/nodejs…

腾讯npm镜像源:mirrors.cloud.tencent.com/help/npm.ht…

node_mirror: http://mirrors.cloud.tencent.com/nodejs-release/
npm_mirror: http://mirrors.cloud.tencent.com/npm/

b.华为云镜像源(待补充)

c.清华大学镜像源(待补充)

5.最终报错解决方案

情况如下:

在配置了新的node源或者腾讯源后依旧报错

情况①:虽然能用nvm list available查看,但是nvm install 的时候无法下载 ,报以下错误

情况②:虽然能用nvm list available查看,但是nvm install 的时候u无法下载 ,报以下错误 Error retrieving "mirrors.aliyun.com/nodejs-rele…": HTTP Status 404 Error retrieving "mirrors.cloud.tencent.com/nodejs-rele…": HTTP Status 403

请求发送失败

a.国外源

使用国外源,直接注释掉国内源。

实测虽然会慢上一两分钟但是依旧是可以下载的

b.手动下载

从nodejs官网手动下载对应版本的node安装包然后把压缩包解压到对应目录下,

例如下载了node19.8.7版本,解压过再把node文件夹重命名为v19.8.7就可以让nvm识别到了

c.使用国外源+魔法

这个就不说了

.end 觉得文章有用的,方便点点赞鼓励一下作者哟

Ciallo*~(∠・ω< )⌒☆