linux怎么安装node_linux切换node版本【教程】

星婷姑娘_3802

星婷姑娘_3802

2026-03-17

567人浏览

原创

用 nvm 装 node.js 是最稳妥的选择:它支持多版本共存、不干扰系统路径、无需 sudo,但需正确安装、source 配置、执行 nvm use 或设 default 版本,并注意各版本 npm 和全局模块相互隔离。

linux怎么安装node_linux切换node版本【教程】

用 nvm 装 Node.js 是最稳妥的选择

Linux 下手动编译或从官网下二进制包装 Node,后续换版本、管理全局模块、处理权限问题全是坑。直接上 nvm(Node Version Manager),它专为多版本共存设计,不碰系统 /usr/bin,也不需要 sudo npm。

实操建议:

  • 用官方安装脚本:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash(注意核对最新版 tag)
  • 装完重启终端,或运行 source ~/.bashrc(或 ~/.zshrc,看你的 shell)
  • 验证:nvm --version 有输出,且 which node 指向 ~/.nvm/versions/node/... 才算生效
  • 别用 apt install nvm —— Ubuntu 官方源里的 nvm 是个假货,叫 node-version-manager,根本不是同一个东西,nvm ls-remote 会报错

nvm install 和 nvm use 的配合逻辑

nvm install 只是下载并解压版本到本地,不会自动激活;nvm use 才真正把 node 和 npm 的路径注入当前 shell。很多人装完以为好了,一查 node -v 还是旧版,就是因为漏了 use。

常见错误现象:

  • nvm install 18.19.0 后,node -v 显示还是 16.x → 忘了 nvm use 18.19.0
  • nvm use 18.19.0 提示 “N/A”,但 nvm ls 确实列出来了 → 当前 shell 没加载 nvm,重跑 source ~/.nvm/nvm.sh
  • 新开终端后版本又变回系统默认 → 没设默认版本,运行 nvm alias default 18.19.0

切换版本时 npm 和全局模块怎么算

每个 Node 版本自带独立的 npm 二进制和 global 目录,nvm use 18.19.0 后,npm install -g 装的东西只对这个版本可见。这不是 bug,是设计使然。

使用场景与注意事项:

  • 用 nvm use 20.11.0 后装的 pnpm,切回 18.19.0 就找不到 → 每个版本得单独装一次,或改用 npx pnpm
  • npm config get prefix 输出的是 ~/.nvm/versions/node/v18.19.0 这类路径,说明全局模块没混在一起
  • 别手动改 ~/.nvm/versions/node/*/lib/node_modules 权限 —— nvm 默认用当前用户权限管理,sudo npm 会污染路径,导致后续 nvm use 失效

遇到 command not found: node 先查这三处

不是所有“装了没反应”都是 nvm 没装好,更多是环境变量断在中间环节。

排查顺序:

  • 运行 echo $PATH,确认输出里有 ~/.nvm/bin(注意:不是 ~/.nvm)
  • 检查 ~/.bashrc 或 ~/.zshrc 末尾是否真有这两行:
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  • nvm ls 能列出版本,但 which node 无输出 → 说明 nvm.sh 加载了,但没执行 nvm use 或 nvm alias default,当前 shell 还没绑定任何版本

复杂点在于 shell 配置文件可能被多个地方覆盖(比如 oh-my-zsh 插件、/etc/profile 干预),nvm 不是“装完就灵”的工具,它依赖你 shell 的初始化链路完整跑通。

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

3503

6

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

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

2023.10.30

775

4

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

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

2023.06.20

4076

8

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

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

2023.07.28

1275

5

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

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

2023.08.03

1638

5

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

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

2023.08.17

9623

11

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

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

2023.09.01

920

4

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

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

2023.09.04

2464

5

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

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

2023.09.14

1489

5

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习