Node.js 是跑 JavaScript 服务端程序的基础环境,装博客、跑前端构建、部署 API 服务都离不开它。很多 VPS 教程里第一行就是"先装 Node"。但直接 apt 装的版本往往很老,项目多了版本还互相冲突。这篇文章教你用 nvm 优雅地安装和管理 Node.js 多版本,并解决 npm 装包慢的问题,最后跑通一个真实项目的部署。
一、为什么推荐用 nvm 安装
直接 apt install nodejs 装出来的版本通常落后好几个大版本,而且卸载升级麻烦。nvm(Node Version Manager)是社区最主流的 Node 版本管理工具,优点是:
- 想装哪个版本就装哪个,多项目多版本互不干扰;
- 一条命令切换全局 Node 版本;
- 官方二进制下载,版本新、卸载干净。
二、安装 nvm
用官方脚本安装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
国内访问 GitHub 慢的话,用 gitee 镜像:
curl -o- https://gitee.com/mirrors/nvm/raw/v0.40.1/install.sh | bash
安装脚本会把 nvm 写进 ~/.bashrc,重新加载配置:
source ~/.bashrc
验证是否装好:
nvm --version
如果提示 command not found,可能是网络没拉全,检查 ~/.nvm 目录是否存在,或手动把下面两行加进 ~/.bashrc:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
三、用 nvm 安装 Node.js
查看远端所有可用版本:
nvm ls-remote
查看最新的 LTS(长期支持)版本号:
nvm ls-remote --lts
安装指定大版本的最新版:
nvm install 20 # 安装 Node 20 最新版(当前主流 LTS)
nvm install 22 # 安装 Node 22(较新 LTS)
nvm install 18 # 老项目需要 18 也可以装
也可以直接装最新版:
nvm install node
查看已安装的版本:
nvm ls
切换当前使用的版本:
nvm use 20
设置默认版本(新开终端自动使用):
nvm alias default 20
验证安装结果:
node -v
npm -v
四、npm 换源:彻底告别装包慢
npm 默认从官方源下载包,国内经常卡住。换成淘宝镜像后速度提升巨大。
方式一:直接配置 registry(推荐)
npm config set registry https://registry.npmmirror.com
验证:
npm config get registry
方式二:用 nrm 管理源
npm install -g nrm
nrm ls # 查看所有源
nrm use npmmirror # 切换到淘宝镜像
方式三:临时使用(不想改全局配置时)
npm install --registry=https://registry.npmmirror.com
pnpm 和 yarn 同样可以换源:
pnpm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
五、跑通第一个 Node 项目
1. 初始化项目
mkdir myapp && cd myapp
npm init -y
2. 安装依赖
npm install express
装好的依赖在 node_modules 目录,包信息记录在 package.json 里。
3. 写个测试服务
新建 app.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello from Node.js!');
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
启动:
node app.js
访问 http://服务器IP:3000 能看到 Hello 页面,说明 Node 环境完全正常。
六、用 pm2 守护 Node 服务(生产必备)
直接 node app.js 跑的进程,SSH 断开或进程崩溃就没了。用 pm2 让服务常驻、开机自启、崩溃自动重启:
npm install -g pm2
启动服务:
pm2 start app.js --name myapp
常用命令:
pm2 list # 查看所有进程
pm2 logs myapp # 查看日志
pm2 restart myapp # 重启
pm2 stop myapp # 停止
pm2 delete myapp # 删除进程
设置开机自启(会自动生成 systemd 服务):
pm2 startup
pm2 save
七、Nginx 反向代理(可选)
想让服务跑在 80/443 端口并带上域名和 HTTPS,加一层 Nginx 反向代理:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx -t 检查配置后 systemctl reload nginx 生效。
八、卸载与升级 Node
# 卸载指定版本
nvm uninstall 18
# 卸载当前使用的版本
nvm uninstall $(node -v)
# 升级到某大版本最新版
nvm install 22 --reinstall-packages-from=20
九、常见问题排查
1. 提示 nvm: command not found
安装后没 source ~/.bashrc,或 nvm 写入的配置被覆盖。手动补上第二节里的两行配置再 source ~/.bashrc。
2. npm install 卡住或报错 ECONNRESET
网络问题,按第四节换成国内镜像源再装。
3. 提示 EACCES: permission denied
用普通用户装的全局包遇到权限问题,不要直接 sudo npm,改用 nvm 安装的 Node 天然避免这类权限问题;或修复 npm 目录权限:npm config set prefix ~/.npm-global。
4. 切换版本后 npm 命令找不到
nvm use 切换版本后 npm 随 Node 一起切换,如果异常就 nvm install --lts 重装一次 npm。
5. 项目用的语法在新版本报错
老项目锁定的 Node 版本别升级,用 nvm use 18 切回老版本跑,不影响其他项目用新版本。
总结
安装 Node.js 的正确姿势:先用 nvm 装版本管理工具,再用 nvm install 装 Node,配好 npm 国内镜像源,开发环境就绪;生产部署用 pm2 守护进程 + Nginx 反代,服务稳定不掉线。记住 nvm 的四个常用命令(install / use / ls / alias default),以后任何 Node 版本问题都能自己解决。




