Linux系统安装Node.js环境 nvm版本管理工具用法

梦墨酱_8972

梦墨酱_8972

2026-04-11

444人浏览

原创

linux下装nvm前必须禁用系统自带node/npm,否则nvm use后node -v仍显示旧版本;需用which node确认路径、mv重命名系统命令、清空~/.npm等残留,并确保shell配置生效。

linux系统安装node.js环境 nvm版本管理工具用法

Linux 下装 nvm 不需要卸载旧 Node,但必须关掉系统自带的 node 和 npm 命令冲突——否则 nvm use 后执行 node -v 仍显示旧版本,这是最常被忽略的坑。

安装前先清理系统级 node 冲突

很多 Linux 发行版(如 Ubuntu/Debian)用 apt install nodejs 装过 Node,它会把 node 命令软链到 /usr/bin/node,而 nvm 管理的 node 在 ~/.nvm/versions/node/ 下。两者共存时,PATH 顺序不对就会优先走系统命令。

  • 运行 which node 和 which npm,如果输出在 /usr/bin/ 或 /usr/local/bin/,说明有冲突
  • 临时禁用:运行 sudo mv /usr/bin/node /usr/bin/node-system(不删,留作回滚)
  • 检查是否还有残留:运行 dpkg -l | grep nodejs(Ubuntu/Debian)或 rpm -qa | grep node(CentOS/RHEL),如有则 sudo apt remove nodejs npm 或 sudo yum remove nodejs npm
  • 别忘了清空 ~/.npm 和 ~/.node-gyp,否则某些 native 模块编译会复用旧头文件

用 curl 安装 nvm(推荐方式)

官方脚本安装最稳定,git clone 或包管理器(如 brew)在 Linux 上反而容易出路径或权限问题。

Browser Js
Browser Js

轻量级CDP浏览器控制,适用于AI代理。相较于内置浏览器工具,token消耗降低3‑10倍,仅在浏览时使用。

下载
  • 执行:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash(v0.39.7 是当前稳定版,2026 年仍广泛兼容)
  • 安装后会提示你把三行代码加进 shell 配置文件(~/.bashrc 或 ~/.zshrc),**必须手动 source 一次**:source ~/.bashrc
  • 验证:nvm --version 应输出版本号;command -v nvm 应返回函数定义,不是可执行文件路径
  • 如果报 nvm: command not found,大概率是没 source 或 shell 配置文件没生效(比如你用 zsh 却只改了 .bashrc)

nvm install 选版本要注意 LTS 还是 latest

nvm install 默认装的是最新稳定版(latest),但多数生产项目依赖 LTS 版本(如 20.18.0)。直接写数字可能失败,因为不是所有版本都支持你的 CPU 架构(比如 ARM64 的 arm64 二进制未必同步发布)。

  • 先查可用列表:nvm list-remote(注意是 list-remote,不是 list available——后者是 Windows nvm-windows 的写法)
  • 装 LTS 最新版:nvm install --lts(等价于 nvm install lts/hydrogen)
  • 装指定 LTS 名称:nvm install lts/gallium(Node 18.x)或 nvm install lts/hydrogen(Node 20.x)
  • 装 latest:nvm install node(注意不是 nvm install latest)
  • 装完自动带对应 npm,不用单独装;但 nvm use 后,npm config get prefix 显示的是 ~/.nvm/versions/node/<version>/lib/node_modules</version>,和系统全局隔离

nvm use 不生效?检查 SHELL 和终端会话

最典型的“用了 nvm use 20.18.0,但新打开的终端还是旧版本”,根本原因不是 nvm 本身,而是 shell 初始化机制。

  • nvm use 只影响当前 shell 会话,**不会写入环境变量永久生效**
  • 想每次打开终端都用某版本,得设 alias:nvm alias default 20.18.0,然后新开终端
  • 如果用 VS Code 终端,要关掉再重开,或在设置里勾选 terminal.integrated.env.linux 并确保 shell 配置已加载
  • 某些桌面环境(GNOME/KDE)启动终端时不会读 .bashrc,而是读 .profile,这时要把 nvm 初始化代码也复制进 .profile
  • 执行 nvm current 始终输出 system?说明当前 shell 没被 nvm 管理——检查 which node 是否指向 ~/.nvm/ 下路径

真正麻烦的不是装不上,而是装上了却不知道为什么 node 命令还在走系统路径;多花 30 秒 run which node 和 nvm current,比反复重装快得多。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3523

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

795

4

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4156

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1295

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1678

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9683

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

940

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2524

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1509

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习