NVM NodeJs版本管理 通关宝典

NVM NodeJs版本管理 通关宝典.jpg

NVM NodeJs版本管理 通关宝典🏹

文章目录

  • NVM NodeJs版本管理 通关宝典🏹
    • 一、NVM是什么
    • 二、开始使用NVM
    • 三、NVM 命令速查
    • 四、手动安装特定Node版本(Windows)🙄
      • 4.1 NVM for windows 运行机制
      • 4.2 手动安装流程
    • 五、切换 NVM 下载镜像源
    • 六、常见问题
    • 参考资料💘
    • 推荐博文🍗


一、NVM是什么

NVM 是对于不同版本 NodeJs 的管理工具,NVM 允许安装不同版本 NodeJs,并通过命令行在这些版本之间切换,最大程度上解决在一台机器上对于依赖不同版本 NodeJs 项目,需要来回重装对应 NodeJs 版本的问题。
列如,如果在依赖 Node18 项目上使用 Node16 安装项目依赖,很有可能会出现这么一条提示,某个包必须要在 Node18 下安装 ,这个时候一般只有两种选择,要么就该项目更改至兼容 Node16,要么重新安装 Node18 版本,大多人会选择后者。

xxx@xxx.xx.xx: The engine "node" is incompatible with this module. Expected version ">=18". Got "16.20.2"

# 或则是
This project requires Node version ">=18"

NVM 原先起始于 Mac OSX 和 Linux 平台,Windows 平台下的 NVM 与这些平台的有所不同,Windows 平台下的 NVM 是基于 Golang 语言编写的,且利用了 Windows 的文件系统机制,有时候在网上搜索到的 NVM 命令发现不管用了,不要感到奇怪,八成是因为平台问题所导致。
除了 NVM 之外,还有 n 能够做到不同版本 NodeJs 之间的切换,这两种都是目前主流的方式,不同的是 NVM 是独立于 NodeJs 外用其他语言开发的软件工具,而 n 是 NodeJs 的一个包。从我个人评价来讲,我推荐使用 NVM,试图用被自己管理的东西作为依赖进行编写,感觉既很奇怪也没意义,不能做到像 NVM 独立于 NodeJs 一键式的操作,也达不到其他语言所拥有的性能与高效性,具体感兴趣的可以查看各自仓库主页了解。

一个有意思的消息是,NVM的作者正在开发代替 MVM For Windows 的替代升级版,详情可查阅https://github.com/coreybutler/nvm-windows/wiki/Runtime


二、开始使用NVM

**在使用之前,请确保卸载任何预先存在的 Node 安装,**打开 NVM 的 Github 发布页,选择 nvm-setup.exe 安装包,具体版本自行选择,一般下载最新。
个人觉得,使用 NVM 比使用 Node 安装包的安装流程还要简便,相比较传统的 NodeJS 安装包,NVM 的安装可谓是非常简易,也就四流程,排除掉开始、确定流程,实际需要操作的也就两个地方。
需要注意的是,NodeJs映射地址在安装完毕后并不会马上存在,只有在 NVM 中安装并使用了任何版本的 NodeJs 后,才会自动创建该目录, 如果使用了默认路径或需要更改,可以在配置文件中更改,详情见 三、手动安装特定Node版本(Windows) 。
2.1 NVM 安装流程
安装完毕后,打开终端输入以下命令,NVM 的安装流程到这就结束了,接下来可以按照自己习惯安装一些包,并且以以往的方式正常运行你的项目。

# 安装 NodeJs@16.20.2
nvm install 16.20.2
# 使用该版本 NodeJs
nvm use 16.20.2

# 验证 NodeJs 是否正常
node --version & npm --version

当然 NVM 的核心在于多版本控制,既然开始使用 NVM,那大多数人需要用到它的这个功能,以下命令主要展示如何安装多版本 NodeJs 并在不同版本间切换。

# 查看 NodeJs 已发布版本
nvm ls available
# 安装 NodeJs@18.18.2 与 NodeJs@14.21.3
nvm install 14.21.3 & nvm install 18.18.2
# 查看已有的 NodeJs 版本
mvm ls

# 使用 14.21.3 版本
nvm use 14.21.3
# 使用 18.18.2 版本
nvm use 18.18.2

三、NVM 命令速查

命令描述平台兼容示例
nvm arch显示当前 NodeJs 运行模式,32位/64位windows✅nvm arch
nvm current显示当前运行的 NodeJs 版本windows✅ liunx✅ mac✅nvm current
nvm debug显示 NVM 配置信息,如版本号、安装路径、不同版本 NodeJs 安装数等windows✅nvm debug
nvm install [arch]安装指定 NodeJs 版本,可以是 'latest’表示最新版本,'lts’表示最新稳定版本,设置[arch] 来安装32位还是64位,默认64windows✅ liunx✅ mac✅nvm install 16.20.2 64
nvm uninstall 卸载指定 NodeJs 版本windows✅ liunx✅ mac✅nvm uninstall 16.20.2
nvm use [version] [arch]使用指定 NodeJs 版本,设置[arch] 表示32位还是64位,默认64windows✅ liunx✅ mac✅nvm use 16.20.2
nvm list [available]列出已安装的 NodeJs 版本,输入 available 列出可安装版本,别名lswindows✅ liunx✅ mac✅nvm list
nvm ls
nvm on启用 NodeJs,使用已有的最新 NodeJs 版本windows✅nvm on
nvm off关闭 NodeJs,此时系统环境不存在 NodeJswindows✅nvm off
nvm proxy [url]设置用于下载的网络代理windows✅nvm proxy 192.168.0.1
nvm node_mirror [url]设置 NodeJs 下载镜像源windows✅nvm node_mirror https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/
nvm npm_mirror [url]设置 npm 下载镜像源windows✅nvm npm_mirror https://registry.npmmirror.com
nvm root [path]设置 NodeJs 映射目录windows✅
nvm ls-remote列出可安装版本liunx✅ mac✅nvm ls-remote
nvm alias设置版本别名,支持 use 别名,特殊 default 名称可在任意新 shell 中使用的默认版本liunx✅ mac✅nvm alias 16 16.20.2
nvm alias default 16.20.2
nvm run 切换到其他版本的 Node 并立即打开 Node 控制台liunx✅ mac✅nvm run node

四、手动安装特定Node版本(Windows)🙄

除了通过 NVM 自带的命令进行安装之外,用户其实可以自行手动安装,这种情况非常适合在没网络,只能使用离线资源的情况下。

4.1 NVM for windows 运行机制

在讲解如何手动安装之前,先来了解一下 NVM 对于多个 Node 版本管理方式。如果已经在 NVM 上安装了部分 NodeJs 版本,那么在 NVM 的安装目录下就能看到存放对应版本的文件夹目录,里面装的其实就是与 NodeJS 官方一模一样的程序文件,NVM 在 use 一个 NodeJs 版本时会将对应的版本放到 NodeJs 运行快捷地址,此地址对应在安装 NVM 时选择的 NodeJs 安装地址,可以简单理解成普通安装 NodeJs 安装包时的选择目录,在 二、开始使用NVM 里的流程中提到过,默认是在 C 盘,如果后期需要更改位置,可以更改 NVM 安装目录下的 settings.txt 文件,而不重新安装。
如果还想要了解更多 NVM 在 Windows 平台的机制,可以去查看 NVM Github地址 说明文档。

root: # NVM安装地址
path: # NodeJs安装地址
arch: # NodeJs安装位数,32 or 64
proxy: # 下载代理,一般为none
node_mirror: # NodeJs镜像源地址
npm_mirror: # Npm镜像源地址

4.1 版本映射原理

4.2 手动安装流程

1)、下载对应版本安装包
在 Node 官网 下载地址上,可以看到 NodeJs 各版本下载入口都在这,其中偶数版本均为受到长期支持的 LTS 稳定版本,建议下载并使用 LTS 版本。需要注意的是,需要在 NVM 上使用并不是需要一个安装程序,而是对于 NodeJs 的执行文件,请下载这些文件的压缩包。

特殊版本可在国内镜像源下载。

4.2 NodeJs版本表
4.3 NodeJs下载页

2)、在 NVM 目录下创建以版本命名的文件夹
将下载下来的文件解压,并丢入NVM 目录下创建以版本命名的文件夹中,文件夹名称与其他版本命名规则保持一致,别忘记带个 v 前缀。

3)、验证所安装版本的 NodeJs
在 NVM 中列出版本列表,并切换至手动安装的版本,检查是否正确安装,至此就大功告成。

# 列出 NodeJs 版本
nvm ls
# 以14.21.3版本为例进行验证
nvm use 14.21.3
node --version & npm --version

五、切换 NVM 下载镜像源

在 NVM 控制镜像源很简单,也不用担心每个 NodeJs 版本都要配置一次,NVM 都为我们处理好了,只需配置一次,所有不同版本的 NodeJs 都能被更改。对于 NodeJS 下载镜像源来说,使用频率比较少,可以不更改。

# npm 更改为淘宝镜像源
nvm npm_mirror https://registry.npmmirror.com
# NodeJs 下载地址更改清华大学镜像源
nvm node_mirror https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/

不同 NodeJs 对于全局包地址都是共享的,对于第三方包管理工具,需要单独进行配置修改,以 yarn 为列。

# 查看当前镜像源
yarn config get registry --global
# 设置淘宝镜像源
yarn config set registry https://registry.npmmirror.com --global

这些命令本质上都在修改配置文件,NVM 安装目录下的 setting.text


六、常见问题

主要讲解在使用 NVM 中可能会遇到的问题,并提供应对方法,80%的问题可通过手动安装解决。

  • Version xx.xx.xx is not available.

    需要安装的版本在云端不存在,要么更换 NodeJs 下载镜像源,要么手动安装。

  • Could not download npm for node XXXXX

    如果在安装某些特定版本时出现了下述提示,那么大概是官方服务器下载地址出了问题,一般也在特定版本下才出现,。要是遇到这种情况的话,那么只能自己手动去node官方下载所需版本存放到NVM版本库中,参考 三、手动安装特定Node版本
    image.png

  • npm不是内部或外部命令,也不是可运行的程序或批处理文件。

    检查一下版本库中文件是否完整,如果不完整尝试重新安装该版本,实在不行手动去node官方下载所需版本存放到NVM版本库中。6.1 文件异常


参考资料💘

🍅因发布平台差异导致阅读体验不同,源文贴出:《NVM 管理Node多版本通关宝典》

  • 官方手册:
    • NVM for windows README.md
    • NVM README.md
  • 网络文献:
    • how-to-install-use-node-version-manager-nvm
    • 淘系前端团队:管理 node 版本,选择 nvm 还是 n?
  • 镜像源:
    • 清华大学Node镜像源

推荐博文🍗

  • 『精』CSS 小技巧之BEM规范
  • 『干货』WebStorm代码模板配置大全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/294514.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何实现安卓端与苹果端互通

在移动应用开发中,如何实现安卓端和苹果端的互通是一个重要的问题。二者缺少一个都会有损失,那如何实现安卓端跟苹果端互通,下面简单的介绍几点方法来帮助你再不同的平台上实现数据交互和功能互通。 基于Web技术 使用Web技术是一种常见并且…

ReactNative 常见问题及处理办法(加固混淆)

文章目录 摘要 引言 正文ScrollView内无法滑动RN热更新中的文件引用问题RN中获取高度的技巧RN强制横屏UI适配问题低版本RN(0.63以下)适配iOS14图片无法显示问题RN清理缓存RN navigation参数取值pod install 或者npm install 443问题处理 打开要处理的…

spark的任务提交方式及流程

本地模式 local 测试用,不多赘述 分布式模式 standalone standalone集群是spark 自带的一个资源调度集群,分为两个角色,master/worker,master负责接收任务请求、资源调度(监听端口7077),worker负责运行exec…

汇报学习1

汇报的重点 项目的意义:可复制的经验、未来的领头基层要多具体的案例且真正有意义提拔的人的标准 汇报的维度 多做定期和主动的回报。 适当的工作汇报,也是对对方尊重的体现。(每一周或每两三天的回报里,要体现对领导的尊重&#…

【2023年度技术盘点】「年终盘点后端系列」探索服务架构体系的技术风向,构建微服务核心能力(升级版)

探索服务架构体系的技术风向,构建微服务核心能力 文章导航大纲前提背景架构未来的风向云原生化的微服务架构(未来软件架构)历史历代服务架构路径新时代架构预测服务架构方向—云原生化微服务云原生化微服务提升了哪些方面 云原生化微服务架构…

Vue 之 修饰符汇总

一、简介 在Vue中,修饰符是一种特殊的语法,用于修改指令或事件绑定的行为,它们以点号(.)的形式添加到指令或事件的后面,并可以改变其默认行为或添加额外的功能,如:禁止事件冒泡、数…

(NeRF学习)NeRF复现 win11

目录 一、获取源码二、环境三、准备数据集1.下载数据集方法一:官方命令方法二:官网下载数据集 2.修改配置 四、开始训练1.更改迭代次数2.开始训练方法一:方法二: 3.使用预训练模型 五、NeRF源码学习 一、获取源码 git clone http…

Vue页面传值:Props属性与$emit事件的应用介绍

一、vue页面传值 在Vue页面中传值有多种方式,简单介绍以下两种 通过props属性传递值:父组件在子组件上定义props属性,子组件通过props接收父组件传递的值。通过$emit触发事件传递值:子组件通过$emit方法触发一个自定义事件&#…

全屏字幕滚动APP:12月份广告总收:84.89元(2023年12月份) 穿山甲SDK接入收益·android广告接入·app变现·广告千展收益·eCPM收益

接入穿山甲SDK app示例: android 数独小游戏 经典数独休闲益智 广告接入示例: Android 个人开发者如何接入广告SDK,实现app流量变现 2023年12月份,总新增用户1242 友盟统计: 12月份:总新增用户1242 2023年12月份…

记录汇川:水塔指令解释-ST

可以通过帮助查看指令手册 PLC的IO地址映射-两种方法 第一种: 新建一个全局变量表,按照如图所示建立IO地址 第二种: 直接如图所示位置定义名字 注意:IW和QB这两个前面一个有蓝色M一个没有。 蓝色的M表示模块发生变化的时候地址不会…

用frp实现内网穿透远程连接终端设备进行调试

一、产品选择分析对比 项目中有用到硬件设备的远程调试,跟大佬们沟通后,大佬推荐这个工具,研究了下也挺好用NATAPP-内网穿透 基于ngrok的国内高速内网映射工具l​​​​​​​m 一般企业用VIP2就行,这个通道 一个通道只能在一个设备上,不限制你连接这台设备的数量…

SSM建材商城网站----计算机毕业设计

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,注册用户管理,新闻公告管理,建材类型管理,配货点管理,建材商品管理,建材订单管理,建材评价管理等功能。 用…

邮件营销发件人名称设置指南:提升邮件信誉度与点击率的技巧

正如品牌名称之于产品,发件人名称之于电子邮件。它有助于提高识别度、熟悉度和清晰度。一封邮件的发件人名称可以是话题的开端,也可以是邮件内容的破坏者。 关于电子邮件的发件人名称,你可能经常不得不思考两件事。 我应该用什么名字&#…

八大在线项目实习 2024年第一期即将开班

八大项目: 某实习网站招聘信息采集与分析(Python数据采集与分析) 股票价格形态聚类与收益分析(Python金融分析) 某平台网络入侵用户自动识别(Python机器学习) 某平台广东省区采购数据分析&#…

open3d连线可视化

目录 写在前面准备代码运行结果参考完 写在前面 1、本文内容 open3d 2、平台/环境 windows10, visual studio 2019 通过cmake构建项目,跨平台通用;open3d 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/135407857…

Idea live template

1:打印入参日志的配置 log.info("$methodName$ 方法入参: $argsLog$",$argsJson$); methodName:methodName() argsLog:groovyScript( "def result; def params\"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList(); for(i 0; i <…

3190个文件!10GB大小!看3D WEB轻量引擎HOOPS Communicator如何高性能读取?

前言&#xff1a; HOOPS Communicator是专为在云端和Web上构建工程应用程序的3D开发工具包。它针对Web工作流、浏览器和工程图形进行了优化。研发小组花了20多年的时间来研发HOOPS Visualize&#xff08;本地3D可视化引擎&#xff09;&#xff0c;他们在这些工作中积累了大量计…

学点心理学做一个灵魂有趣的人,为你讲解生动好玩的心理学话题

一、教程描述 催眠真的能重返前生&#xff1f;星座为什么那么准&#xff1f;如何”洗脑”&#xff1f;为什么学了那么多教养课程&#xff0c;还是养不好自己的孩子&#xff1f;心理问题可以通过自学心理学自救吗&#xff1f;靠谱的心理咨询师长啥样&#xff1f;本套教程用风趣…

苦学golang半年,写了一款web服务器

苦学golang半年&#xff0c;写了一款web服务器 文章目录 苦学golang半年&#xff0c;写了一款web服务器example 项目地址&#xff1a;https://github.com/fengyuan-liang/jet-web-fasthttp 苦学golang半年&#xff0c;写了一款web服务器&#xff0c;里面包含笔者各种工程实践&a…

Python小细节之Gui图形化界面库tkinter学习

敲打计数脚本学TKinter 引言开整选择决定难易了解她使用她运行效果 结尾 引言 我的爬取表情包的爬虫文件写好了 运行 输入关键词就可以得到对应的 表情包 我也通过pyinstall 打包了 但是很丑 就只有一个黑box 我是新手 所以我知道 这对于普通人来说 不友好 且在使用的过程中 …