NVM 的安装和使用

今天后端同学那边遇到了一个问题,那边跑一个react项目,npm install 直接报错,但是在我这边并没有报异常,后来发现他的 NPM 版本为 3.10.10, 我猜测是 NPM 版本太低的缘故,就顺便看了下 Node 的版本,版本是 v6.10.0, 所以直接给他更新了 NodeJS,正当我以为问题解决了的时候,后端同学又和我说,现在的项目可以跑起来了,但是之前的项目他跑不起来了。

emmmm…..我又过去看了下报错信息,这会问题是 Node 给我更新掉了,版本太高项目跑不起来了….
所以,有了这篇关于 Node Version Manager (NVM) for Windows 的文章

安装

NVM 安装很简单,直接去Github上边找 nvm-windowsreleases,直接下载最新那版的zip就可以了。有免安装和安装版可以选择(我选择了安装版)。

安装过程中选择一下 NVM 安装目录以及之后 NodeJS 的管理目录。

选择目录

之前有安装 NodeJS 记得指定到之前安装的目录下,就可以使用 NVM 管理之前安装的Node版本了。
如果是NodeJS使用的是绿色版的话,之后可能需要使用NVM 重新下载安装。

然后就等待安装完成就可以了。
完成之后在终端输入 nvm 检查版本确认是否安装成功(当前版本1.1.7)

检查版本


常用命令

  • 查看 NVM 下已经安装的 Node 版本号
    显示当前已安装 Node 版本列表,缩写为 ls, 当前使用的版本会在前标识 *
    在末尾加上 available 显示可供下载的所有版本列表

    PS C:\Users\yog\Desktop> nvm list // 简写为 nvm ls
        14.5.0
      * 12.12.0 (Currently using 64-bit executable)
  • 切换到指定的 Node 版本

    nvm use [version] [arch]

    一般先使用 nvm ls 输出已经安装的版本,然后再根据可选项切换版本。

    PS C:\Users\yog\Desktop> nvm use 12.12.0 // 具体版本号
    Now using node v12.12.0 (64-bit)

    设置 [arch] 可指定 32/64位结构。
    如果不填版本号只填写 32( nvm use 32 )将继续使用当前Node版本,只切换到32位模式。

  • 安装指定版本的Node

    nvm install <version> [arch]

    <version> 可以是 具体版本号 也可以是 latest 来安装最新的 稳定 版本,
    [arch] 指定安装 32位 还是 64位 版本(默认为系统结构), 设置为 all 以同时安装32和64位版本。

    PS C:\Users\yog\Desktop> nvm install 6.10.0
    Downloading node.js version 6.10.0 (64-bit)...
    Complete
    Downloading npm version 3.10.10... Complete
    Installing npm v3.10.10...
    
    Installation complete. If you want to use this version, type
    
    nvm use 6.10.0

    也可以在末尾添加 --insecure 可以绕过远程下载服务器的SSL验证。

  • 卸载指定Node版本

    nvm uninstall <version>

    PS C:\Users\yog\Desktop> nvm uninstall 6.10.0
    Uninstalling node v6.10.0... done
  • 查看所有可安装的Node版本
    PS C:\Users\yog\Desktop> nvm ls available
    
    |   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
    |--------------|--------------|--------------|--------------|
    |    14.7.0    |   12.18.3    |   0.12.18    |   0.11.16    |
    |    14.6.0    |   12.18.2    |   0.12.17    |   0.11.15    |
    |    14.5.0    |   12.18.1    |   0.12.16    |   0.11.14    |
    |    14.4.0    |   12.18.0    |   0.12.15    |   0.11.13    |
    |    14.3.0    |   12.17.0    |   0.12.14    |   0.11.12    |
    |    14.2.0    |   12.16.3    |   0.12.13    |   0.11.11    |
    |    14.1.0    |   12.16.2    |   0.12.12    |   0.11.10    |
    |    14.0.0    |   12.16.1    |   0.12.11    |    0.11.9    |
    |   13.14.0    |   12.16.0    |   0.12.10    |    0.11.8    |
    |   13.13.0    |   12.15.0    |    0.12.9    |    0.11.7    |
    |   13.12.0    |   12.14.1    |    0.12.8    |    0.11.6    |
    |   13.11.0    |   12.14.0    |    0.12.7    |    0.11.5    |
    |   13.10.1    |   12.13.1    |    0.12.6    |    0.11.4    |
    |   13.10.0    |   12.13.0    |    0.12.5    |    0.11.3    |
    |    13.9.0    |   10.22.0    |    0.12.4    |    0.11.2    |
    |    13.8.0    |   10.21.0    |    0.12.3    |    0.11.1    |
    |    13.7.0    |   10.20.1    |    0.12.2    |    0.11.0    |
    |    13.6.0    |   10.20.0    |    0.12.1    |    0.9.12    |
    |    13.5.0    |   10.19.0    |    0.12.0    |    0.9.11    |
    |    13.4.0    |   10.18.1    |   0.10.48    |    0.9.10    |
    
    This is a partial list. For a complete list, visit https://nodejs.org/download/release

其它命令

  1. nvm arch 查看 Node 当前运行32位还是64位模式。

  2. nvm on 开启 NVM 版本管理.

  3. nvm off 关闭 NVM 版本管理.

  4. nvm proxy [url] 设置用于下载的代理。将 [url] 留空查看当前设置的代理,将 [url] 设置为 “none” 来删除代理。

  5. nvm node_mirror [url] 设置节点镜像。默认为 https://nodejs.org/dist/,将 [url] 留空 以使用 默认url

  6. nvm npm_mirror [url] 设置 NPM 镜像。默认为 https://github.com/npm/cli/archive/,将 [url] 留空 保留为 默认url。

  7. nvm root [path] 设置 NVM 不同版本的 Node.js 的存储目录,如果 [path] 留空,将显示当前设置的存储目录。

  8. nvm version 显示当前 NVM 运行版本。 缩写 v


遇到的问题

安装完成之后使用 nvm ls 没有看到之前已经安装的NodeJS版本

我在使用的过程中没有遇到这个问题,但是同事在安装之后遇到了,这个问题。有可能是因为安装时指定的Node目录错误了,可以卸载之前安装的 NodeJS,然后使用 nvm install <version> 重新安装对应版本的 NodeJS

切换版本之后全局依赖丢失

今天小伙伴问题,切换了新版本之后他以前安装的全局依赖都没了,又要重新安装,然后切换到老版本之后和新安装的全局依赖版本还不一样,问我怎么解决的。

这个问题,是因为切换了版本之后其实是切换软链接路径,然后你又重新配置过依赖项安装位置了,比如指向到了NodsJs目录下,所以现在指向到的是新的NodeJs下的目录,肯定目录下就没有老的全局依赖了。
所以重新切换到外部就好了,比如说我是在 NVM 目录下新建一个 dependencies 文件夹,然后重新 npm set prefix 到这个目录就好了,和以前切换npm安装路径一样,记得也同时修改一下缓存位置。
对了,最后记得修改系统的环境变量,分别在用户变量和系统变量的 path 中,只不过我是单独配置了一个 prefix 项,所以就不展示了。