多 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…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...

无头浏览器技术:Python爬虫如何精准模拟搜索点击
1. 无头浏览器技术概述 1.1 什么是无头浏览器? 无头浏览器是一种没有图形用户界面(GUI)的浏览器,它通过程序控制浏览器内核(如Chromium、Firefox)执行页面加载、JavaScript渲染、表单提交等操作。由于不渲…...

前端异步编程全场景解读
前端异步编程是现代Web开发的核心,它解决了浏览器单线程执行带来的UI阻塞问题。以下从多个维度进行深度解析: 一、异步编程的核心概念 JavaScript的执行环境是单线程的,这意味着在同一时间只能执行一个任务。为了不阻塞主线程,J…...