Nodejs是Javascript/Typescript程序员工作中必不可少的开发环境,由于历史原因和自身发展的特点,Nodejs始终处于快速的版本迭代中,且不同版本之间的兼容性并不是非常好,这就导致只安装某一个版本的nodejs对程序员来说可能是远远不够的——不同项目可能采用了不同版本的nodejs进行开发,其他参考性的开源项目或者模块等等又采用了另外的版本。在这种情况下,使用nodejs版本管理工具来在同一台电脑中安装并管理多个不同版本的nodejs是非常有必要的。在nodejs版本管理工具中,首选大名鼎鼎的NVM(node version manager),但由于NVM仅能应用于Linux和Mac系统下,在Windows平台,需要使用另一个版本管理工具NVM-Windows。需要注意的是,虽然NVM和NVM-Windows名称听上去非常相似,但后者是一个完整独立的开源项目,和NVM并没有直接关联性。

1. NVM

1.1 NVM下载与安装

  1. 按照NVM项目官方文档,下载NVM仅需(在Linux或者Mac系统下)执行下列两行命令中任意一行即可。但由于国内网络环境的原因,这两行命令常常会运行失败。稍有命令行使用经验的用户可以看到,这两行代码的作用无非是用cURL或者wget下载了nvm的安装版本并运行。因此,如果该指令运行失败,也可以直接在nvm鲜蘑菇对应地址中找到install.sh文件进行下载。或者在本地新建一个 `install.sh` 文件并将内容拷入其中即可。
  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
  2. wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
  1. 官方项目中的 `install.sh` 内容如下,在上述命令运行失败的情况下,可以在本地新建 `install.sh` 文件,并将文档内容复制到其中运行即可(在Bash下通过 ` ./install.sh ` 命令即可运行,如运行失败则可能需要赋予install.sh文件运行权限,执行类似 `chmod 777 install.sh` 命令)。<br />[install.sh](https://www.yuque.com/attachments/yuque/0/2020/sh/259929/1597633106001-b3df1ffb-80ec-46ff-a3cb-5fca6f1a91bf.sh?_lake_card=%7B%22uid%22%3A%221597298394612-0%22%2C%22src%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2020%2Fsh%2F259929%2F1597633106001-b3df1ffb-80ec-46ff-a3cb-5fca6f1a91bf.sh%22%2C%22name%22%3A%22install.sh%22%2C%22size%22%3A13950%2C%22type%22%3A%22text%2Fx-sh%22%2C%22ext%22%3A%22sh%22%2C%22progress%22%3A%7B%22percent%22%3A99%7D%2C%22status%22%3A%22done%22%2C%22percent%22%3A0%2C%22id%22%3A%22rUrxf%22%2C%22refSrc%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2020%2Fsh%2F259929%2F1597298391982-a31c2d84-cf2a-48d4-8e80-34aea5f9aa2c.sh%22%2C%22card%22%3A%22file%22%7D)<br /> 安装完成后,在命令行粘贴下列指令即可将NVM添加到系统命令中(这是使用默认的Bash终端的,情况,如果你使用的终端是其他终端,可能需要将下列内容粘贴到对应终端的配置文件下,可能是``~/.bash_profile·`, `~/.zshrc`, `~/.profile` 或者 `~/.bashrc` )
  1. export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
  2. [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

安装正常的情况下,输入 nvm 就可以看到终端中提示的nvm命令信息了。常用的nvm命令包括 nvm install, nvm use, nvm ls-remote等等。

1.2 NVM配置

NVM默认使用官方仓库,下载和安装nodejs 速度会很慢,这时就需要配置NVM仓库到国内镜像。需要在配置文件(可能是`~/.bash_profile·, ~/.zshrc, ~/.profile 或者 ~/.bashrc ,在ubuntu中使用bash的话配置文件是 /.bashrc )最后部分添加如下内容:

  1. export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node

执行完成后 source 一下配置文件,更新即可。之后再运行NVM时会使用国内镜像进行下载与安装。

1.3 nvm常用命令

  1. nvm ls #查看本地所有node版本nvm ls-remote查看远程node版本
  2. nvm install 13.10.1 #安装13.10.1 版本
  3. nvm use 13.10.1 #切换至 13.10.1 版本
  4. nvm uninstall 13.10.1 #卸载13.10.1 版本

2. NVM-Windows

2.1 NVM-Windows下载与安装

NVM-windows版本发布页下载安装包。该项目维护和更新较慢,目前最新版本是1.17版。更新的版本需要自行根据文档进行构建。
nvm-setup.zip
如果下载了免安装版本,在使用前需要进行配置。如果下载的是nvm-setup安装版,则按照常规的windows安装程序进行安装即可。需要注意的是,nvm-windows默认安装在 C:\Users\[用户名]\AppData\Roaming\nvm 目录下, 在安装nvm for windows之前,需要卸载任何现有版本的node.js。并且需要删除现有的nodejs安装目录和npm安装目录(例如:”C:\Program Files\nodejs’,“C:\Users\weiqinl\AppData\Roaming\npm”)。因为,nvm生成的symlink(符号链接/超链接)不会覆盖现有安装目录。
**

2.2 nvm-windows配置

安装完成后,在命令行输入nvm可看到命令行提示,注意nvm-windows和nvm的命令不尽相同,熟悉nvm的用户可能需要习惯一下。nvm-windows配置文件可以通过命令行进行,也可以在安装目录下直接编辑 settings.txt 实现。

settings.txt 文件中修改下列行,可以配置nvm仓库为国内仓库,以加快node版本的下载和安装速度。

  1. node_mirror: https://npm.taobao.org/mirrors/node/
  2. npm_mirror: https://npm.taobao.org/mirrors/npm/

2.3 nvm-windows常用命令

  1. nvm list #查看本地所有node版本
  2. nvm install 13.10.1 #安装13.10.1 版本
  3. nvm use 13.10.1 #切换至 13.10.1 版本
  4. nvm uninstall 13.10.1 #卸载13.10.1 版本

3. 配置npm与yarn源

安装完每个版本的node后,都需要配置一下npm的安装源,以便加快npm包的安装速度,如果使用yarn作为包管理器,还需要全局安装yarn并配置安装源。

  1. npm config get registry // 查看npm当前镜像源
  2. npm config set registry https://registry.npm.taobao.org/ // 设置npm镜像源为淘宝镜像
  3. npm install -g yarn //全局安装yarn
  4. yarn config get registry // 查看yarn当前镜像源
  5. yarn config set registry https://registry.npm.taobao.org/ // 设置yarn镜像源为淘宝镜像

其他部分备选源列表

  1. npm --- https://registry.npmjs.org/
  2. cnpm --- https://r.cnpmjs.org/
  3. taobao --- https://registry.npm.taobao.org/
  4. nj --- https://registry.nodejitsu.com/
  5. rednpm --- https://registry.mirror.cqupt.edu.cn/
  6. npmMirror --- https://skimdb.npmjs.com/registry/
  7. deunpm --- http://registry.enpmjs.org/

4. NVM安装过程中连接服务器错误问题解决

NVM安装过程中,可能出现无法连接github的错误,具体错误为 "curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused" 。这是因为 github 的IP地址解析问题,可以通过搜索对应的IP地址并且修改Hosts文件来解决。

4.1 查询IP地址

由于国内网络环境的原因,有些国外网站的 CDN(内容分发) 地址无法访问,这就需要通过专业的ip地址查询网站查询网站对应的ip地址,并且在 hosts 文件中进行设置,以直接将网址解析到指定的ip地址进行访问。ip地址查询可以通过ip查询 网站或者ipadress.com 进行查询。

在ip地址查询中输入 raw.githubusercontent.com ,可以看到对应的ip地址。在终端中通过 ping 命令测试可访问的ip地址,例如ping`` 151.101.108.133 测试对应的ip地址是否可以访问,对于可以访问的地址,则可以通过修改 hosts 文件以访问网站。image.png
image.png

4.2 修改 Hosts 文件

Hosts文件是计算机本机中用来解析ip地址的文件,在实际应用中可以解析或者屏蔽特定网站。在windows系统中,该文件位位置在 C:\Windows\System32\hosts ,在 Linux(Ubuntu发行版) 中,该文件位置在 /etc/hosts 。以上图查询地址为例,在 hosts 文件最后一行添加如下内容并保存:

  1. 151.101.108.133 raw.githubusercontent.com

linux 系统中,可输入 sudo source /etc/hosts 来使文件修改立即生效。否则可能需要重启电脑后方可生效。经过以上操作后,可以重复第一步的步骤来安装NVM。

参考资源:
1.NVM项目官网
2.NVM-Windows项目官网