多 NodeJS 环境管理
前言
对于某个项目依赖特定版本的 NodeJS,或几个项目的 NodeJS 版本冲突时,需要在系统中安装多个版本的 NodeJS,这时可以使用一些工具来进行多个 NodeJS 的管理。
有很多类似的 NodeJS 管理工具,如 nvm, nvs, n 等,接下来我们来讲讲如何使用。
NVM
NVM(Node Version Manager)是一个 NodeJS 的多版本管理工具,使用 Shell 编写,开源软件,支持 Linux 和 Mac 系统。
官方仓库地址
下载
直接在 Github 的官方仓库 中下载,或者使用下载脚本安装。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# 或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
脚本会下载并复制 nvm 到 ~/.nvm 目录下,并添加相关的环境变量。如果在命令行中找不到 nvm 命令,可以让终端重新载入配置。
例如:
bash: source ~/.bashrc
zsh: source ~/.zshrc
ksh: . ~/.profile
使用
下载 NodeJS,可指定特定的版本,或使用 node 下载最新的版本。
nvm install node # node 即最新版本
nvm install 14.7.0 # 指定特定版本
nvm install --lts # 下载最新的长期支持版本
设置别名。
nvm alias my_alias v14.4.0
查看可供下载的版本。
nvm ls-remote
指定使用的版本。
nvm use node
nvm use --lts
运行指定的版本。
nvm run node --version
在指定版本的命令行中运行。
nvm exec 4.2 node --version
设置默认使用的版本。
nvm alias default 18
卸载指定的版本。
nvm uninstall <version>
配置文件
支持使用 .nvmrc 配置文件来指定版本,配置文件中仅包含版本号。nvm use, nvm install, nvm exec, nvm run 和 nvm which 命令不带版本参数的情况下就会使用配置文件中指定的版本。
NVM-windows
NVM-windows 是 nvm 多版本管理工具的 Windows 版本,使用 Go 编写,开源软件,支持 Windows 系统。
官方仓库地址
下载
直接在 Github 的官方仓库 中下载,它有一个可视化的安装界面,安装非常简单。
使用
打开命令行进行使用。

查看 NodeJS 版本。
# 查看已经安装的版本
nvm list# 查看网络可以下载的版本
nvm list available# 查看当前使用的版本
nvm current
安装指定版本的 NodeJS。
nvm install <version> [arch]
使用 指定特定的版本,使用 latest 下载最新的稳定版本,使用 lts 下载最近的长期支持版本。可选的 [arch] 指定 32 或 64 位,默认使用系统架构。
切换 NodeJS 版本,版本支持 latest、lts 或 newest,newest 是最新安装的版本。可选的 [arch] 指定 32 或 64 位。
nvm use <version> [arch]

删除指定的版本。
nvm uninstall <version>
其他管理。
# 打开 NodeJS 控制
nvm on# 关闭 NodeJS 控制
nvm off# 设置下载的代理地址,使用 none 则删除代理
nvm proxy [url]# 设置镜像地址,对于国内加速非常方便
nvm node_mirror <node_mirror_url> # 国内可使用 https://npmmirror.com/mirrors/node/
nvm npm_mirror <npm_mirror_url> # 国内可使用 https://npmmirror.com/mirrors/npm/
NVS
NVS(Node Version Switcher)是一个跨平台的 NodeJS 管理工具,它使用 Javascript 编写,支持 Windows、Mac 和 Linux。
官方仓库地址
安装
可以从官方仓库中下载安装包,对于 Windows 提供了 MSI 安装包,对于 Mac / Linux 也提供了脚本安装。
export NVS_HOME="$HOME/.nvs"
git clone https://github.com/jasongin/nvs "$NVS_HOME"
. "$NVS_HOME/nvs.sh" install
使用
安装特定的版本。
# 安装最新版本
nvs add latest# 安装最新的长期支持版本
nvs add lts
切换版本。
nvs use lts
nvs 默认使用软链接的方式添加命令,也可以默认添加。
nvs link lts
运行特定的版本。
nvs run <ver> <js> [args...]
nvs exec <ver> <exe> [args...]
创建别名。
nvs alias [name] [value]
删除特定的版本。
nvs rm <version>
nvs 支持交互的方式,直接输入 nvs 可以交互式选择版本。

N
一款非常简单,没有子 shell,没有配置文件,没有复杂 API 的 NodeJS 管理工具。它是一个开源软件,使用 shell 编写,支持 Linux 和 Mac。
官方仓库地址
安装
可以直接使用 npm 安装。
npm install -g n
或者使用其他工具安装。
# Mac 使用 brew
brew install n# Mac 使用 MacPorts
port install n# 下载脚本安装
curl -L https://bit.ly/n-install | bash
使用
下载特定的 NodeJS 版本,支持 lts,latest 等特定名称。
n 10.16.0
n lts
也支持交互方式,直接输入 n 可以弹出选择列表。
$ nnode/4.9.1
ο node/8.11.3node/10.15.0Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
使用特定的版本执行。
n run 8.11.3 --debug some.js
n exec 10 my-script --fast test
n exec lts zsh
查看已下载的版本。
n ls
删除特定的版本。
n rm 0.9.4 v0.10.0
相关文章:
多 NodeJS 环境管理
前言 对于某个项目依赖特定版本的 NodeJS,或几个项目的 NodeJS 版本冲突时,需要在系统中安装多个版本的 NodeJS,这时可以使用一些工具来进行多个 NodeJS 的管理。 有很多类似的 NodeJS 管理工具,如 nvm, nvs, n 等,接…...
解决网站被植入跳转木马病毒
概述 网站被植入跳转木马病毒是一种常见的安全威胁,它可能导致网站用户被重定向到恶意站点。本文将指导您如何检测、清除这类木马病毒以及采取预防措施。 步骤1:确认感染 首先,需要确认您的网站确实受到了跳转木马的影响。 示例ÿ…...
Node.js(6)——npm软件包管理
npm npm是Node.js标准的软件包管理器。 使用: 初始化清单文件:npm init-y(得到package.json文件,有则略过此命令)下载软件包:npm i 软件包名称使用软件包 示例: 初始状态下npm文件夹下只有server.js,下载软件包前看…...
区块链核心概念与技术架构简介
引言 区块链,一种分布式账本技术,不仅为数字货币提供了基础设施,更在金融、供应链、物联网等多个领域展现出广泛的应用前景。区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。 如果说蒸汽机释放了人们的…...
≌图概念凸显包含射线V的直线W是比V长的线
黄小宁 x轴中:各非负数点xh≥0都变回自己即都作恒等变换,其余点x-h都变号为xh就使x轴失去负数点而变为射线V{xh≥0}。这x轴变为射线V⊂x轴是不保距变换即不是x轴的刚体运动使x轴不≌V⊂x轴(小学生都知道x轴不≌射线V)。据≌图概念…...
子路由的配置方法?
子路由的配置方法主要涉及到在Vue-router中定义嵌套路由,即一个路由内部包含多个子路由。以下是配置子路由的基本步骤: 1. 定义父路由 首先,在Vue Router中定义父路由。父路由可以像其他普通路由一样定义,但通常会有一个组件与之…...
【大模型从入门到精通2】openAI api的入门介绍2
互动对话界面的搭建 让我们来看看如何建立一个互动对话界面,用户可以在此输入查询,系统实时处理并显示响应。 import panel as pn # 用于构建图形用户界面# 初始化对话历史记录和GUI组件 conversation_history [] input_widget pn.widgets.TextInpu…...
【前端编程小白】的HTML从零入门到实战
之前有高中毕业生读了博客,想让我帮他找一些前端入门的内容,他们报的计算机专业,想利用开学前夕学习一下,我给他推荐了一些菜鸟教程呀什么的。后来想,看来还是很多人需要一些更加入门的可成的,而且很多教程…...
easyexcel读文件入批量入es
1. 封装实体类,并对应excel表中的列 Data public class User {private String md5;private String id; ExcelProperty(value "age")private String age;ExcelProperty(value "username")private String name;} 2. 批量入库 private void in…...
JS+H5打字练习器
实现功能 1.导入.TXT文件到打字练习内容(部分浏览器可能出于安全问题限制了这一步操作) 2.输入文本到打字练习内(弹出输入框,将要练习的内容输入至输入框) 3. 开始练习,并根据正误在打字练习内容文本上修…...
windows系统关闭开机自检硬盘
效果: 注册表关闭开机硬盘自检,你可以按照以下步骤操作: 打开注册表编辑器: 按 Win R 键打开“运行”对话框。输入 regedit 并按回车,打开注册表编辑器。 定位到自检相关的键: 依次展开以下路径&#x…...
【多线程开发 5】实践使用Lock和Condition
Lock和Condition Lock 线程之间同步或者竞争都需要锁这类结构,一般我们都会用Object的wait和signal搭配synchronized关键字进行多线程开发,但是很多时候会造成死锁的现象,这是因为synchroniezd无法破坏死锁的产生条件,但是Lock接…...
2.4-结构化并发:协程的结构化异常管理
文章目录 协程结构化异常流程协程结构化异常流程和取消流程的区别子协程异常为什么要连带取消父协程? CoroutineExceptionHandler异常协程异常的最后一道拦截:CoroutineExceptionHandlerCoroutineExceptionHandler 为什么只能设置给最外层协程才有效&…...
Android 12.0 debug版本打开OEM解锁开关功能实现
通常为了方便push在debug版本会采用如下命令 adb root adb disable-verity 提示: Device is locked. Please unlock the device first. 查找日志可以发现system/core/set-verity-state/set-verity-state.cpp文件中is_avb_device_locked方法里 这个获取ro.boot…...
linux用户组练习
准备工作 [rootlocalhost ~]# watch -n 1 tail -n 5 /etc/group使用watch 动态监控 1.建立用户组 shengcan,其id 为2000 2.建立用户组 caiwu,其id 为 2001 3.足建立用户组 jishu,其id 为 2002 4.建立用户lee,指定其主组id为sh…...
[Docker][Docker Container]详细讲解
目录 1.什么是容器?2.容器命令1.docker creatre2.docker run3.docker ps4.docker logs5.docker attach6.docker exec7.docker start8.docker stop9.docker restart10.docker kill11.docker top12.docker stats13.docker container inspect14.docker port15.docker c…...
塑造美好心灵,激发创造活力|第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展开展
第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展 展览现场 由中央美术学院、景德镇陶瓷大学、景德镇陶文旅控股集团共同主办,由中国非物质文化遗产保护协会陶瓷分会、中国文化艺术发展促进会陶瓷专业委员会、中央美术学院陶瓷艺术研究院、中央美术学院少儿美术教…...
鸿蒙开发刷新单个item会闪一下处理
鸿蒙开发刷新单个item会闪一下 首先我用的是懒加载方式,改变某位数据后我调listener.onDataChange(index),发现item的改动是变了,但是item也闪了一下。 先分析为什么item会闪一下 其他是因为item上有图片,加载的网络图。你onDataChange(index)时,它会重新加载这一item,…...
您需要了解的有关 5G 的一切。
转载 https://www.qualcomm.com/5g/what-is-5g 在这里,您可以找到 5G 技术的解释——5G 的工作原理、5G 的重要性以及它如何改变世界连接和沟通的方式。在 Qualcomm,我们发明了使 5G 成为可能的根本性突破。 问:什么是 5G? 答&…...
【redis】初识redis入门,基础部署以及介绍
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
OpenClaw备份策略:GLM-4.7-Flash智能管理本地与云端存储
OpenClaw备份策略:GLM-4.7-Flash智能管理本地与云端存储 1. 为什么需要智能备份方案 上周我的移动硬盘突然罢工,导致三个月的项目文档全部丢失。这次惨痛经历让我意识到:传统备份方式已经无法满足现代工作需求。手动备份不仅耗时耗力&#…...
极简OpenClaw技能开发:给Qwen3-32B-Chat扩展Excel处理能力
极简OpenClaw技能开发:给Qwen3-32B-Chat扩展Excel处理能力 1. 为什么需要自定义Excel处理技能 去年我接手了一个数据分析项目,每天需要处理几十份Excel报表。手动操作不仅耗时,还容易出错。当我尝试用OpenClaw自动化这个流程时,…...
Mojo调用Python模块性能翻倍?深度剖析混合编程内存管理、GIL绕过与ABI兼容性(附实测基准数据)
第一章:Mojo与Python混合编程案例源码分析Mojo 作为兼具 Python 兼容性与系统级性能的新一代编程语言,其与 Python 的混合编程能力是实际工程落地的关键。以下通过一个典型场景——在 Python 主程序中调用 Mojo 实现的高性能向量加法函数——展开源码级剖…...
TSLint格式化器完全指南:打造个性化的代码检查报告
TSLint格式化器完全指南:打造个性化的代码检查报告 【免费下载链接】tslint :vertical_traffic_light: An extensible linter for the TypeScript language 项目地址: https://gitcode.com/gh_mirrors/ts/tslint TSLint作为TypeScript生态系统中最重要的代码…...
Verilog进阶实战:独热码状态机设计序列检测器的核心技巧
1. 独热码状态机的设计哲学 第一次接触独热码(One-Hot)编码时,我盯着那串只有一个1的状态编码看了半天——这不就是硬件版的"单选题"吗?每个状态都有自己的专属VIP通道,这种设计理念在中小规模状态机中简直是降维打击。记得去年做电…...
Kali实战:CTF杂项题必备工具全解析
1. Kali Linux与CTF杂项题简介 第一次参加CTF比赛时,面对五花八门的杂项题完全无从下手。直到发现Kali Linux这个"瑞士军刀",才真正打开了解题新世界。Kali Linux预装了300安全工具,其中约20%专门用于处理隐写术、文件分析等杂项题…...
基于SpringBoot的租车系统毕设实战:从需求建模到高可用部署
最近在辅导学弟学妹做毕业设计,发现很多“基于SpringBoot的租车系统”项目,虽然功能列表很长,但仔细一看,架构松散,业务逻辑像面条代码,更别提应对真实场景下的并发问题了。今天,我就结合自己做…...
浪潮服务器硬盘红灯报警?手把手教你更换RAID阵列故障盘(附同步失败解决方案)
浪潮服务器硬盘红灯报警全流程处置指南:从故障诊断到阵列重建 当浪潮服务器的硬盘指示灯突然亮起刺眼的红色,大多数运维人员的第一反应往往是心头一紧。这种视觉警报不仅意味着硬件故障,更可能预示着数据丢失的风险。不同于普通PC的硬盘故障…...
深入解析WIFI中EAP-TLS认证流程与安全机制
1. EAP-TLS认证:WIFI安全连接的基石 每次我们用手机连接公司或学校的WIFI时,系统总会弹出一个证书确认的窗口,这就是EAP-TLS在发挥作用。作为目前最安全的WIFI认证协议之一,它就像网络世界的"护照查验系统",…...
从‘画图’到‘造芯’:模拟版图工程师必须懂的CMOS工艺那些事儿
从‘画图’到‘造芯’:模拟版图工程师必须懂的CMOS工艺那些事儿 当你第一次打开PDK文档,面对密密麻麻的设计规则表格时,是否感觉像在解读天书?作为模拟版图工程师,我们每天都在与纳米级的几何图形打交道,但…...
