安装 Node.js:使用 nvm 管理 Node 运行时与 npm 包管理器(Odin 前端课程指南)
【免费下载链接】curriculumThe open curriculum for learning web development项目地址: https://gitcode.com/GitHub_Trending/cu/curriculum
本指南面向正在学习前端开发、即将进入 JavaScript 进阶练习的开发者,系统讲解如何在 Linux 与 macOS 上通过 nvm(Node Version Manager)安装并配置 Node.js 与 npm,以及如何使用 Node 自带的 REPL 交互式控制台进行代码调试。读完本文,你将能够独立完成 Node 环境的搭建、版本切换、供应链安全设置,并掌握node、npm、nvm三个命令的准确区分与日常用法。
Node.js 是什么
Node.js(通常简称为 "Node")是一个 JavaScript 运行时环境(runtime environment),它让你能够在浏览器之外运行 JavaScript 代码。这意味着同一门语言既能在浏览器中驱动页面交互,也能在命令行与服务器端执行脚本。
在本课程(foundations/javascript_basics)接下来的练习中,Node 是必需的运行环境:例如运行测试、执行课程配套的脚本、为后续使用 npm 安装各类 JavaScript 库与工具做准备。事实上,当前仓库自身就依赖 Node 生态:在根目录的 package.json 中可以看到,test脚本通过node --test运行测试,lint/fix脚本则依赖markdownlint-cli2这一 npm 工具,而 markdownlint/ 目录下的*.js规则文件也需要 Node 才能执行——这些都印证了 Node 是现代 JavaScript 开发的基础设施。
在开始安装之前,需要先厘清两个极易混淆的工具:
- nvm(Node Version Manager):Node 版本管理器,负责安装、切换、升级不同版本的 Node。
- npm(Node Package Manager):Node 包管理器,随 Node 一起安装,用于安装和管理 JavaScript 生态中的各种库与工具(例如当前仓库 devDependencies 中声明的
markdownlint-cli2)。
一句话总结:nvm 管 Node 本身,npm 管 Node 的依赖包。
为什么通过 nvm 安装 Node
本课程选择用 nvm 安装 Node,而非直接使用系统包管理器(如apt),原因如下:
- 版本切换方便:同一台机器上可共存多个 Node 版本,随时用一条命令切换;
- 升级简单:无需重新配置系统环境,
nvm install即可获得新版本; - 避免权限问题:nvm 将 Node 安装在用户目录下,不需要
sudo提权,也不污染系统全局环境; - 贴合真实开发场景:许多项目会锁定 Node 版本(如
.nvmrc),nvm 是社区中最主流的管理方式。
第一步:安装 nvm
nvm 的安装依赖curl与 bash 环境。请根据你的操作系统选择对应指南。
Linux 安装指南
完整的官方步骤见仓库中的 installation_guides/linux.md,核心流程如下:
Step 0:更新系统包并安装 curl
sudo apt update && sudo apt upgrade sudo apt install curlcurl是下载 nvm 安装脚本所必需的工具。
Step 1:下载并安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash该命令会从 nvm 官方仓库拉取指定版本(v0.40.4)的安装脚本并交给 bash 执行。
Step 2:初始化 nvm
安装完成后,终端会输出初始化提示。若没有提示(或你想手动执行),请运行:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm这段命令的作用是:确定 nvm 的安装目录(优先使用XDG_CONFIG_HOME,否则使用~/.nvm),然后加载nvm.sh脚本,使nvm命令在当前终端会话中生效。
验证安装:
command -v nvm如果返回nvm: command not found,说明 nvm 尚未加载,请关闭终端并重新打开后再试(重新打开后 shell 会自动读取配置文件)。
macOS 安装指南
完整步骤见 installation_guides/macos.md,核心流程如下:
macOS 10.15 及以上版本默认 shell 为 zsh。安装过程中 nvm 会查找用户主目录下的.zshrc文件,而该文件默认不存在,因此需要先手动创建:
touch ~/.zshrc然后执行安装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash重启终端,或复制粘贴以下命令立即加载:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion与 Linux 版本相比,macOS 指南额外加载了bash_completion脚本,用于提供nvm相关命令的自动补全。
验证安装:
nvm --version正常会输出已安装的 nvm 版本号。
第二步:使用 nvm 安装 Node LTS
安装完 nvm 后,即可用它安装 Node。请始终选择LTS(Long-Term Support,长期支持)版本,这是 Node 官方维护时间最长、最稳定的版本线,可以避免与后续课程将要安装的各类 npm 包产生兼容性问题。
安装最新 LTS 版本
nvm install --lts终端会输出大量下载与编译信息。如果安装成功,输出中应能看到类似这样的一行(X 为实际版本号):
Downloading and installing Node vXX.xx.x...如果没看到,请关闭终端重新打开,再执行一次nvm install --lts(原因同上:nvm 可能未在当前 shell 中加载)。
指定 nvm 使用 LTS 版本
nvm use --lts该命令告诉 nvm:当你在终端执行node命令时,使用本机已安装的最新 LTS 版本。务必使用 LTS 版本,避免与后续课程安装的依赖包出现不兼容。
验证 Node 与 npm
node -v npm -vnode -v应输出类似vXX.xx.x的版本号;npm -v应输出类似XX.xx.x的版本号(npm 随 Node 一同安装,无需单独安装)。
两个命令都能正常输出版本号,即代表 Node 与 npm 安装成功。
补充说明:nvm 安装的多个 Node 版本互不干扰,随时可用
nvm install <版本号>安装指定版本、用nvm use <版本号>切换、用nvm ls查看本机已有版本。
第三步:配置 npm 供应链安全设置
npm 在 v11.10.0 版本起引入了一个值得开启的默认安全设置:延迟安装刚发布的新依赖。执行以下命令:
npm config set min-release-age=3该配置的含义是:npm 将拒绝安装发布不足 3 天的依赖包。这样做的目的是规避"新发布即被投毒"的供应链攻击风险——攻击者常利用新发布或刚被劫持的包在极短时间内传播恶意代码,而社区通常需要几天时间才能发现并处理。开启此设置后,可显著降低这类风险。
如果你安装的 npm 版本早于 v11.10.0,该配置项可能不生效;建议保持 Node/npm 处于 LTS 的最新状态(课程文档在撰写时已按该设置要求执行)。
使用 Node REPL 调试 JavaScript
Node 自带一个REPL(Read-Eval-Print Loop,交互式解释器):在终端中直接运行并编辑 JavaScript 代码,功能类似于浏览器开发者工具中的 Console 面板,非常适合快速调试与浏览器无关的小段代码,而无需每次打开浏览器。
打开 REPL
在终端中单独执行node(不带任何参数):
node你会看到>提示符,此时即可直接输入 JavaScript 表达式,回车后立即得到求值结果,例如:
> 1 + 2 3 > const greeting = "Hello, Node!"; undefined > greeting 'Hello, Node!'退出 REPL
输入以下命令即可退出:
.exit也可以使用快捷键Ctrl + D(EOF)退出。
直接执行脚本文件
除了交互模式,Node 最常见的用法是执行.js脚本文件:
node your_script.js这与本课程后续练习(如编写并运行独立 JS 程序)的使用方式一致——Node 让 JavaScript 真正脱离了浏览器,成为一门可以随处运行的通用语言。
常见问题排查
| 现象 | 原因与解决办法 |
|---|---|
command -v nvm或nvm提示 command not found | nvm 脚本未加载。关闭终端重新打开,或手动执行初始化 export 命令(见上文各系统初始化步骤) |
nvm install --lts无反应 | 同样先确认 nvm 已加载,再重新执行安装命令 |
node -v版本与预期不符 | 可能本机存在多个 Node 版本或系统自带的旧版 Node,执行nvm use --lts指定版本 |
npm -v无输出 | 确认 Node 安装完整;npm 与 Node 捆绑安装,正常安装 Node 后即存在 |
知识自检
- 什么是 Node.js?Node.js 是允许 JavaScript 在浏览器之外运行的运行时环境。
- 应该安装绝对最新的 Node 版本,还是最新的 LTS 版本?应安装并使用最新 LTS(长期支持)版本,以确保与后续课程将安装的 npm 依赖包兼容。
- nvm 和 npm 有何区别?nvm 管理 Node 版本本身;npm 随 Node 附带,用于安装和管理 JavaScript 依赖包。
相关资源
- 主课程文档:foundations/javascript_basics/installing_nodejs.md
- Linux 安装指南:foundations/javascript_basics/installation_guides/linux.md
- macOS 安装指南:foundations/javascript_basics/installation_guides/macos.md
- 仓库对 Node/npm 的实际依赖示例:package.json(
test脚本使用node --test,依赖markdownlint-cli2) - 历史版本参考(早期课程文档):archive/installing_node.md
完成上述三步(安装 nvm → 安装并启用 Node LTS → 配置 npm 安全设置)后,你的机器就具备了运行现代 JavaScript 的全部基础能力,可以无缝进入接下来的 JavaScript 基础练习与项目开发了。
【免费下载链接】curriculumThe open curriculum for learning web development项目地址: https://gitcode.com/GitHub_Trending/cu/curriculum
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考