Node.js 与 npm 的核心区别与关系
- Node.js 本质上就是基于 Chrome V8 引擎打造的 Ja vaScript 运行时环境,让你能在浏览器之外执行 JS 代码。它自带事件循环、非阻塞 I/O、文件系统操作和网络通信等能力,用来写后端服务、命令行工具都行。
- npm,全称 Node Package Manager,是 Node.js 默认的包管理器。它的职责就是安装、更新、卸载、管理项目依赖。npm 随 Node.js 一起安装,生态里积累了海量开源包,是 Node 开发离不开的基础设施。
- 两者的关系一句话说清:Node.js 是“运行时”,npm 是“包管理工具”。它们通常捆绑出现,但分工不同,谁也替代不了谁。
在 Ubuntu 中的安装与版本管理
- Ubuntu 官方仓库:一条命令就能装,但版本往往很老(比如 Ubuntu 20.04 仓库里还是 Node.js 10.19.0)。执行
sudo apt update && sudo apt install nodejs npm,然后nodejs -v、npm -v验证即可。 - NodeSource 仓库:适合需要较新或特定版本的场景,比如想装 14.x、16.x、18.x、20.x 都行。命令示例:
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt-get install -y nodejs。 - nvm(Node Version Manager):这是最灵活的方式,可以在同一台机器上管理多个 Node 版本,每个项目都能自由切换。常用命令包括:
nvm install --lts或nvm install 18nvm use 18nvm alias default 18nvm lsnvm current
常见命令对比与典型用法
| 维度 | Node.js | npm |
|---|---|---|
| 作用 | 执行 Ja vaScript 代码(服务端/CLI) | 管理 依赖包(安装、更新、卸载、版本锁定) |
| 是否可单独安装 | 是(安装 Node 即可获得运行时) | 否(通常随 Node.js 一起安装) |
| 常用命令 | node app.js、node -v | npm init、npm install、npm install -g 包名、npm update、npm uninstall、npm -v |
| 典型产出 | 运行服务、脚本、命令行工具 | node_modules/ 与 package.json/package-lock.json 依赖描述与锁文件 |
说明:全局安装(-g)的包用于命令行工具,项目本地安装用于应用代码依赖。
易混淆点与排查建议
- 在 Ubuntu 中,APT 包名是
nodejs(不是“node”),所以验证版本要用nodejs -v。如果命令找不到,检查是否真的安装了,或者 PATH 里有没有/usr/bin/nodejs。 - 如果同时装了多个 Node 版本(比如用了 nvm),先确认当前用的是哪个:
nvm current。需要切换就nvm use 版本号,再设置默认:nvm alias default 版本号。 - 升级 npm 用
npm install -g npm@latest。如果遇到权限报错,优先用 nvm 或者把 npm 全局目录改到用户目录下,尽量别用sudo装全局包。