node版本管理 - nvm

32 阅读2分钟

在实际工作中,我们有时需要维护老项目,这些老项目是基于老版本的node环境构建的,要启动这些项目需要先卸载我们系统当前版本的node环境,再去官网下载对应的node环境。当我们改完问题时,又需要卸载旧的node环境安装新版本的node环境,这个切换的过程很麻烦。

所以,我们需要一个node版本管理工具,实现轻松切换node版本环境。

nvm就能满足我们的需要,具体使用方式参考:nvm安装和使用教程

常用的指令如下:

nvm ls // 当前已安装的node版本列表
nvm ls available // 可安装的node版本列表,全部信息在 https://nodejs.org/en/about/previous-releases
nvm install + 版本号 // 安装对应版本的node
nvm uninstall + 版本号 // 卸载对应版本的node
nvm use + 版本号 // 使用对应版本的node
node -v // 查看当前node版本

如何知道老项目对应的node版本?

运行npm install会抛出错误,比如:

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'karma@1.7.1',
npm WARN EBADENGINE   required: { node: '0.10 || 0.12 || 4 || 5 || 6 || 7 || 8' },
npm WARN EBADENGINE   current: { node: 'v20.11.0', npm: '10.2.4' }
npm WARN EBADENGINE }

上面代码的意思:组件karma@1.7.1 需要依赖8.0x及以下版本的node环境,我们上node官网版本列表找到对应的版本即可,比如此案例中的v8.17.0

使用nvm安装老版本node,发现没有安装对应的npm?

安装老版本node时,终端有报错:Downloading npm version 4.2.0... Error。报错显示表示npm插件失败,卸载并重新安装仍然失败。

解决办法参考:用nvm安装node后,发现npm下载总是失败的解决办法

具体操作如下:

  1. 到报错页面的提示地址下载对应版本的npm暗转包包。
  2. 解压并复制文件到老版本的node的/node_moudles/下,修改文件名称为npm
  3. 复制名称为npmnpx的配置文件(4个)到老版本node的根目录下。