# nvm 管理node版本

# nvm 说明

nvm是node版本管理工具

为了解决node各种版本存在不兼容现象

nvm是让你在同一台机器上安装和切换不同版本的node的工具

# window 下载

下载地址 https://github.com/coreybutler/nvm-windows/releases

  • nvm-noinstall.zip: 绿色免安装版本,使用前需配置
  • nvm-setup.zip:下载之后安装,不需要配置,直接就可以用。
  • Source code(zip):zip压缩的源码
  • Sourc code(tar.gz):tar.gz的源码,一般用于*nix系统

使用 nvm-setup.zip =>> 解压文件安装, 一直按next 下一步就好了。

foo

# mac 苹果电脑下载,

打开终端,执行下面代码,切换安装的路径

cd ~

查看最新nvm版本

点击上面网址进去,找到 Install & Update Script,在Install & Update Script 下面就有最新版本的安装命令了

在选择执行下面其中一行代码即可

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

此时nvm就被安装在了/.nvm下啦

命令:

nvm install v10.4.0:安装指定版本号的node

nvm use v10.3.0:切换node的版本,这个是全局的

nvm current:当前node版本

nvm ls:列出所有已经安装的node版本

# macOS 安装 nvm 踩坑小记

# 卸载 node 相关模块

如果你已经全局安装了 node,最好先将此删除,避免以后出现不必要的冲突。

# 查看已经安装在全局的模块
npm ls -g --depth=0
# 删除全局 node_modules 目录
sudo rm -rf /usr/local/lib/node_modules
# 删除 node
sudo rm /usr/local/bin/node 
# 删除全局 node 模块注册的软链
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

# 安装 nvm

在下载 nvm 之前先检查当前用户的 home 目录下是否存在 .bash_profile 文件,没有的话要先创建。

创建完毕之后是不用对文件进行任何写入操作的,因为后面下载 nvm 的时候,它会自动找到我们新建的这个文件并写入相应内容。

我看到网上很多教程都要求主动往 .bash_profile 文件写入内容,其实并不需要。

# 1.创建 .bash_profile 文件
touch ~/.bash_profile
# 2.运行下载/更新脚本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

# nvm: command not found

# 解决方案一

很不幸,我跟着网上的 n 篇教程,下载完毕之后试过大家给出的 n 种方法,包括什么重启终端、在 nvm 文件夹里也复制一份 .bash_profile 文件、手动修改配置文件啥啥啥的,结果还是提示 nvm: command not found。

后来我发现每次执行 source ~/.bash_profile 之后会生效(我之前新建的配置文件),但是只生效一次。

后来总算找到解决方法,大致是因为我的系统是最新更新的 macOS Catalina 系统,默认的 shell 是 zsh,所以找不到配置文件啥的。

解决方法如下:

# 1.新建一个 .zshrc 文件(如果没有的话)
touch ~/.zshrc
# 2.在 ~/.zshrc文件最后,增加一行 
source ~/.bash_profile

# 解决方法二

由于没有.bash_profile这一文件,将.bashrc中关于node的配置copy到.zshrc里边。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

copy上面代码到~.zshrc下就可以啦。

vim ~/.zshrc

重新打开终端, 运行

nvm version

# 解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题

需要到 raw.githubusercontent.com 上拉取代码。

网上搜索了一下,发现是 github 的一些域名的 DNS 解析被污染,导致DNS 解析过程无法通过域名取得正确的IP地址。

在本机的 host 文件中添加,建议使用 switchhosts 方便 host 管理

199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com

添加以上几条 host 配置,就可以下载nvm了

# CentOS修改hosts文件及生效命令

vim /etc/hosts
更新时间: 2021年10月20日星期三晚上6点10分