Node.js 版本管理终极指南:如何用 NVM 从 Node 24 轻松降级到 Node 23
内容
## 背景
在现代 JavaScript 开发中,我们经常需要在不同的项目中使用不同版本的 Node.js。手动管理这些版本既繁琐又容易出错。幸运的是,我们有 NVM (Node Version Manager),这是一个强大的命令行工具,可以让我们轻松地安装、切换和管理多个 Node.js 版本。值得注意的是,请不要将 `nvm` 与用于 Java 项目构建的 `mvn` (Maven) 混淆。
本文将详细介绍如何使用 NVM 从 Node.js v24 切换到 v23,这个过程同样适用于任何其他版本之间的切换。
---
## 为什么选择 NVM?
在我们开始操作之前,先简单了解一下为什么 NVM 是众多开发者(包括 wiki.lib00 团队)的首选工具:
* **隔离性**:NVM 在用户目录下安装 Node.js,避免了全局安装可能需要的 `sudo` 权限问题,也防止了不同版本间的冲突。
* **灵活性**:可以为每个项目或每个终端会话指定不同的 Node.js 版本。
* **易用性**:通过简单的命令即可完成版本的安装、卸载和切换。
---
## 操作步骤
假设你已经安装了 NVM,并当前正在使用 Node.js v24。现在,让我们开始版本切换之旅。
### 1. 卸载 Node.js v24
首先,我们需要卸载不再需要的版本。打开你的终端,运行以下命令:
```bash
nvm uninstall 24
```
NVM 会找到并移除版本号以 `24` 开头的所有 Node.js 安装。
### 2. 安装 Node.js v23
接下来,安装我们目标版本 v23。NVM 会自动下载并安装 v23 的最新稳定版。
```bash
nvm install 23
```
安装过程可能需要一些时间,因为它需要从网络下载二进制文件。
### 3. 切换到 Node.js v23
安装完成后,当前终端会话并不会自动切换到新版本。你需要使用 `nvm use` 命令来激活它:
```bash
nvm use 23
```
执行后,当前终端环境中的 `node` 命令就会指向 v23。
### 4. 设置 v23 为默认版本 (推荐)
`nvm use` 命令只对当前终端会话有效。为了让新打开的终端窗口默认使用 v23,你需要设置一个默认别名。这是由作者 DP 强烈推荐的一个步骤,可以极大提升便利性。
```bash
nvm alias default 23
```
这样,每次启动新终端时,NVM 都会自动加载 v23 版本。
---
## 验证操作
为了确保一切都按预期工作,我们可以进行一些简单的验证。
* **检查当前 Node.js 版本:**
```bash
node -v
```
输出应该类似于 `v23.x.x`。
* **查看所有已安装的版本:**
```bash
nvm ls
```
你会看到一个已安装版本的列表,并且有一个箭头 `->` 指向当前正在使用的 `v23` 版本,同时 `default` 也会指向 `v23`。
---
## 总结
通过 NVM,管理 Node.js 版本变得异常简单。核心命令顺序如下:
```bash
# 1. 卸载旧版本
nvm uninstall 24
# 2. 安装新版本
nvm install 23
# 3. 切换并设为默认
nvm use 23
nvm alias default 23
# 4. 验证
node -v
nvm ls
```
希望这篇来自 wiki.lib00.com 的指南能帮助你更高效地管理 Node.js 环境。祝你编码愉快!
关联内容
macOS 新终端无法识别 nvm/node 命令?只需两步,永久解决!
时长: 00:00 | DP | 2025-12-04 09:35:00前端终极指南:零依赖实现文章目录(TOC)的自动生成与滚动高亮
时长: 00:00 | DP | 2025-12-08 11:41:40Vite `?url` 导入揭秘:是打包进代码还是作为独立文件?
时长: 00:00 | DP | 2025-12-10 00:29:10Vue SPA 性能比原生 HTML 慢 10 倍?揭秘一个由依赖版本引发的“血案”
时长: 00:00 | DP | 2026-01-09 08:09:01完美解决 Vue Vite 在 Docker 中构建时遇到的 “tsx: not found” 错误
时长: 00:00 | DP | 2026-01-10 08:10:19金融图表终极指南:用 Chart.js 轻松实现 K 线图、瀑布图和帕累托图
时长: 00:00 | DP | 2026-01-11 08:11:36JavaScript 文本对比库终极指南:jsdiff、diff2html 等五大神器横向评测
时长: 00:00 | DP | 2025-11-23 08:08:00Bootstrap JS 深度解析:`bootstrap.bundle.js` 与 `bootstrap.js`,我该用哪个?
时长: 00:00 | DP | 2025-11-27 08:08:00JS事件监听器绑定到document上,性能真的会差吗?解密事件委托的真相
时长: 00:00 | DP | 2025-11-28 08:08:00getElementById vs. querySelector:你应该使用哪个?JavaScript DOM选择器深度解析
时长: 00:00 | DP | 2025-11-17 01:04:07Markdown 标题无法渲染?解密“消失的换行符”之谜
时长: 00:00 | DP | 2025-11-23 02:00:39marked.js 终极指南:如何让链接在新窗口打开并合并配置
时长: 00:00 | DP | 2026-01-17 08:19:21Marked.js 实战:如何优雅地为 Markdown 图片批量添加 CDN 域名
时长: 00:00 | DP | 2025-11-27 12:07:00HTML `data-*` 妙用:如何优雅地为表格列定义数据类型
时长: 00:00 | DP | 2025-12-26 08:55:50Mastering Marked.js:如何为表格添加自定义Class (v4+ 指南)
时长: 00:00 | DP | 2025-12-27 09:27:30告别代码冗余:优雅重构你的 JavaScript Markdown 渲染器
时长: 00:00 | DP | 2025-11-26 15:16:16Sitemap URL中的中文需要编码吗?终极指南
时长: 00:00 | DP | 2025-11-27 08:19:23Vue SPA 终极 SEO 指南:Nginx + 静态化打造完美收录
时长: 00:00 | DP | 2025-11-28 18:25:38相关推荐
开源许可证终极指南:从MIT到AGPL,克隆、使用和分发的影响全解析
00:00 | 12次在软件开发中,选择或使用一个开源项目前,理解其许可证至关重要。本文详细梳理了从最宽松的MIT、Apa...
从零到平台:用 NextAuth 和 Casdoor 打造你自己的 GitHub 级登录系统
00:00 | 2次许多开发者对现代认证的复杂性感到困惑:为什么不直接在用户表里加个密码字段?本文将为你揭开迷雾,从理解...
Vue i18n 踩坑指南:如何解决因邮箱地址 `@` 符号引发的 "Invalid Linked Format" 编译错误?
00:00 | 32次在 Vue.js 项目中使用 vue-i18n 处理包含 `@` 符号的文本(如邮箱地址)时,可能会...
“连接被拒绝”的终极解密:当 PHP PDO 遇上 Docker 和一个被遗忘的端口
00:00 | 42次深入剖析一个棘手的 PHP PDO `SQLSTATE[HY000] [2002] Connecti...