记录一下,在一个没有UI界面、只有终端命令的CentOS 7.4系统下安装Node.js的过程。
首先,为了方便以后切换Node.js版本,先安装NVM。
一 安装NVM
nvm的标准安装是直接运行命令:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
但是国内网络行不通,会报错。
- 直接克隆 Gitee 上的 NVM 镜像(最快、最稳定),不依赖 GitHub。
# 1. 删除之前安装失败的残留(如果有)
rm -rf ~/.nvm
# 2. 直接从 Gitee 克隆 NVM 仓库
git clone https://gitee.com/mirrors/nvm.git ~/.nvm
# 3. 切换到最新稳定版本标签(可选)
cd ~/.nvm
git checkout v0.40.1 # 目前最新稳定版,也可以不切换,直接使用 master
# 4. 手动加载环境变量
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bashrc
# 5. 立即生效
source ~/.bashrc
# 6. 验证安装
nvm --version
二 安装 Node.js
NVN安装成功后,使用 nvm install 命令就可以安装任意版本的Node.js了。
-
使用 nvm install 22 安装目前最新的Node.js 22.x版本,发现报错。原因是CentOS系统从2023年开始不再更新,最高只支持到Node.js 16版本。
-
另一个可选方案是,自己下载Node 22版本的源码从头编译,但是CentOS系统自带的GCC编译器太老,无法编译Node 22,必须先升级GCC等一系列工具,而且还需安装Python 3.x。
-
所以我选择了一个更简单的方案,就是使用Node官方为 CentOS 7 构建的 Node.js 16,最稳定、零编译。
# 1. 卸载 nvm 安装的 22 版本
nvm uninstall 22
# 2. 安装官方 CentOS 7 专用 Node.js 16
curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install -y nodejs
# 3. 验证
node -v # v16.x
npm -v # 8.x
- 此时执行 node -v 后报错:-bash: /root/.nvm/versions/node/v22.22.0/bin/node: 没有那个文件或目录。原因是安装了NVM,执行 node -v 时,Shell 会按照 PATH 环境变量中的目录顺序查找 node。由于 NVM 的路径(/root/.nvm/versions/node/v22.22.0/bin)依然存在于 PATH 且优先级更高,所以系统找到了那个已经不存在的旧版本路径,而不是新安装的 /usr/bin/node。解决办法是将 NVM 的默认版本指向系统 Node.js即可。
# 1. 将 NVM 默认版本设置为系统版本
nvm alias default system
# 2. 验证当前使用的版本
nvm current # 应显示 "system"(或 v16.x.x)
node -v # 应显示 v16.x.x
# 3. 可选:删除已卸载的 v22 残留记录(避免警告)
nvm uninstall 22 # 如果之前已卸载,会提示版本不存在,忽略即可
- 安装Node.js成功。为了方便后续使用 npm 安装依赖,再配置淘宝镜像以加速下载:
npm config set registry https://registry.npmmirror.com