使用 nvm(不破坏系统)Linux 上把 Node.js / npm 升级到你指定版本(Node v23.x、npm 10.x)

一、安装nvm

这是开发环境、服务器都最推荐的方式。

1️⃣ 安装 nvm

复制代码
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

安装完成后,必须重新加载环境:

复制代码
source ~/.bashrc
# 或
source ~/.zshrc

确认 nvm 可用:

复制代码
nvm -v

2️⃣ 安装需要的 Node 版本

复制代码
nvm install 23

或指定更精确版本:

复制代码
nvm install 23.11.0

3️⃣ 使用该版本(并设为默认)

复制代码
nvm use 23
nvm alias default 23

4️⃣ 验证版本

复制代码
node -v
# v23.11.0

npm -v
# 10.9.2(或更高)

注意:npm 会随 Node 自动安装

如果 npm 不是 10.x,可手动升级:

复制代码
npm install -g npm@10

二、如果不能用 nvm(比如最小系统、产线机)

方案 B:官方二进制包(手动安装)

1️⃣ 下载 Node 官方 Linux 包

复制代码
wget https://nodejs.org/dist/v23.11.0/node-v23.11.0-linux-x64.tar.xz

2️⃣ 解压并安装到 /usr/local

复制代码
sudo tar -xJf node-v23.11.0-linux-x64.tar.xz -C /usr/local/
sudo ln -sf /usr/local/node-v23.11.0-linux-x64 /usr/local/node

3️⃣ 配置环境变量

复制代码
echo 'export PATH=/usr/local/node/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

4️⃣ 验证

复制代码
node -v
npm -v

三、如果你现在系统里已经有旧 Node / npm

查看来源(很重要)

复制代码
which node
which npm

如果是:

  • /usr/bin/node → 系统包

  • ~/.nvm/... → nvm 管理


清理旧系统版本(可选,但推荐)

复制代码
sudo apt remove nodejs npm

⚠️ 不要删除 nvm 安装的版本


四、常见坑(你很可能会遇到)

❌ 升级后版本还是旧的

原因:PATH 顺序错误

解决:

复制代码
echo $PATH

确保:

复制代码
~/.nvm/versions/node/.../bin 在前面

❌ npm 版本没到 10.x

复制代码
npm install -g npm@10

❌ sudo npm 报错

不要 sudo npm(nvm 环境下)


五、快速确认清单(照着做就对)

复制代码
node -v    # v23.11.0
npm -v     # 10.9.2
which node # ~/.nvm/versions/node/...

六、建议(重要)

开发环境:用 nvm
系统服务:用官方二进制包
永远不要混用 apt + nvm

相关推荐
科力锐品牌君23 分钟前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
zhangrelay34 分钟前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
流浪0011 小时前
Linux系统篇39——线程(四) pthread库的由来和线程的创建与等待
linux·操作系统·线程·pthread库
Lancker1 小时前
chnroute-linux — 中国大陆 IP 段每日自动更新 + 「仅允许国内访问」落地
linux·运维·tcp/ip
高山有多高2 小时前
【Linux笔记】Linux进程与守护进程
linux
大侠归来3 小时前
Ubuntu 搭建 APUE 环境:从源码编译到第一个示例跑通
linux·运维·ubuntu
搬砖的小码农_Sky3 小时前
AI Agent:Windows上Node.js安装后 npm -v报错
前端·npm·node.js·人机交互
shdkfbbv4 小时前
【无标题】
linux·运维·服务器
周洲08305 小时前
STM32片内Flash读写深度详解|掉电参数保存、底层原理
linux·前端·stm32
shimly1234565 小时前
比 find + grep 更好用的 nm + addr2line
linux