Node.js: 安装与环境配置
最后更新:2026-08-26
Bob 是一名前端开发者,刚入职一家科技公司。入职第一天,导师给了他项目仓库地址,克隆下来后运行 npm install 却报了一堆错误——原来公司项目用的是 Node.js 22 LTS,而他本地还是 18 的旧版本。直接升级又怕影响其他老项目,Bob 一时陷入两难。好在导师推荐了 nvm,让他可以在不同 Node.js 版本之间自由切换,每个项目用各自适配的版本,互不干扰。从此 Bob 再也不怕版本冲突了。
你将学到
- 使用 nvm 安装与切换 Node.js 版本
- 验证 Node.js 和 npm 安装是否成功
- 在 REPL 交互环境中执行 JavaScript 代码
- 编写并运行第一个 Node.js 脚本
- 使用 npm init 创建 package.json 项目描述文件
1. nvm 安装与使用
(1) 为什么需要 nvm
Node.js 版本迭代频繁,不同项目可能依赖不同版本。nvm(Node Version Manager)允许你在同一台机器上安装多个 Node.js 版本,并按需切换,避免版本冲突。
(2) 安装 nvm
macOS / Linux:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
安装完成后,重启终端或执行:
source ~/.bashrc
Windows:
Windows 用户可使用 nvm-windows,下载安装包后按向导完成安装。
▶ 示例:(3) 安装与切换 Node.js 版本
nvm install 22
nvm use 22
nvm alias default 22
| 命令 | 说明 |
|---|---|
nvm install <version> |
安装指定版本 |
nvm use <version> |
切换到指定版本 |
nvm ls |
列出已安装的版本 |
nvm ls-remote |
列出可安装的远程版本 |
nvm alias default <version> |
设置默认版本 |
nvm current |
显示当前使用的版本 |
▶ 示例:安装 Node.js 22 LTS 并切换
$ nvm install 22
Downloading and installing node v22.11.0...
Now using node v22.11.0 (npm v10.9.0)
$ nvm use 22
Now using node v22.11.0 (npm v10.9.0)
$ nvm current
v22.11.0
(4) Node.js 安装方式对比
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 官网安装包 | 简单直观,一键安装 | 难以切换版本,卸载麻烦 | 只用一个版本的初学者 |
| nvm | 多版本共存,切换灵活 | 需额外安装 nvm | 多项目、多版本的开发者 |
| 包管理器 (apt/brew) | 系统集成好 | 版本可能滞后,切换不便 | Linux 服务器环境 |
2. Node.js 安装验证
(1) 检查 Node.js 版本
安装完成后,打开终端输入:
node --version
输出类似 v22.11.0,表示 Node.js 已正确安装。
(2) 检查 npm 版本
npm 随 Node.js 一起安装,验证方式:
npm --version
输出类似 10.9.0,表示 npm 可用。
▶ 示例:完整验证流程
$ node --version
v22.11.0
$ npm --version
10.9.0
$ node -e "console.log('Node.js is working!')"
Node.js is working!
小技巧:
node -e可以直接执行一行 JavaScript 代码,适合快速测试。
3. REPL 交互式环境
(1) 进入与退出 REPL
在终端输入 node 即可进入 REPL(Read-Eval-Print Loop)交互环境:
node
退出方式:输入 .exit 或按 Ctrl + C 两次。
(2) REPL 常用命令
| 命令 | 说明 |
|---|---|
.help |
显示帮助信息 |
.exit |
退出 REPL |
.save <file> |
保存当前会话到文件 |
.load <file> |
加载文件到会话 |
.clear |
清除当前上下文 |
.editor |
进入编辑器模式(多行编辑) |
(3) 多行输入
REPL 会自动检测未闭合的括号、花括号,进入多行输入模式:
> function add(a, b) {
... return a + b;
... }
undefined
> add(3, 5)
8
▶ 示例:在 REPL 中快速测试代码
> const prices = [9.99, 24.5, 3.75, 18.0]
undefined
> prices.filter(p => p > 10).reduce((sum, p) => sum + p, 0)
42.5
> const total = prices.reduce((sum, p) => sum + p, 0)
undefined
> total
56.24
4. 运行第一个脚本
(1) 创建 JavaScript 文件
新建一个 hello.js 文件:
const greeting = 'Hello, Node.js!';
console.log(greeting);
const version = process.version;
console.log(`Running on ${version}`);
▶ 示例:(2) 使用 node 命令运行
node hello.js
▶ 示例:运行脚本并传递参数
创建 greet.js:
const name = process.argv[2] || 'World';
console.log(`Hello, ${name}!`);
console.log(`Node version: ${process.version}`);
console.log(`Current directory: ${process.cwd()}`);
运行:
$ node greet.js Bob
Hello, Bob!
Node version: v22.11.0
Current directory: /home/bob/projects/demo
(3) process 对象简介
process 是 Node.js 全局对象,无需 require 即可使用,常用属性:
| 属性 | 说明 |
|---|---|
process.version |
Node.js 版本号 |
process.argv |
命令行参数数组 |
process.cwd() |
当前工作目录 |
process.env |
环境变量对象 |
process.exit() |
退出进程 |
5. package.json 创建
▶ 示例:(1) 使用 npm init 交互式创建
npm init
npm 会逐项询问项目名称、版本、描述等信息,最终生成 package.json。
▶ 示例:(2) 使用 npm init -y 快速创建
npm init -y
-y 标志跳过所有提问,使用默认值生成 package.json,适合快速开始。
▶ 示例:npm init -y 生成的 package.json
$ mkdir my-app && cd my-app
$ npm init -y
{
"name": "my-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
(3) package.json 关键字段说明
| 字段 | 说明 | 示例 |
|---|---|---|
name |
项目名称,必填,小写无空格 | "my-app" |
version |
语义化版本号,必填 | "1.0.0" |
description |
项目描述 | "A sample project" |
main |
入口文件 | "index.js" |
scripts |
自定义脚本命令 | {"start": "node index.js"} |
dependencies |
生产依赖 | {"express": "^4.21.0"} |
devDependencies |
开发依赖 | {"jest": "^29.7.0"} |
license |
开源协议 | "MIT" |
(4) 语义化版本范围符号
| 符号 | 含义 | 示例 | 允许版本 |
|---|---|---|---|
| 无 | 精确匹配 | "1.2.3" |
仅 1.2.3 |
^ |
兼容大版本 | "^1.2.3" |
≥1.2.3,<2.0.0 |
~ |
兼容小版本 | "~1.2.3" |
≥1.2.3,<1.3.0 |
>= |
大于等于 | ">=1.2.3" |
1.2.3 及以上 |
6. 常用开发工具
(1) VS Code 安装与配置
VS Code 是最流行的 Node.js 开发编辑器,内置终端和调试器。
(2) 推荐 Node.js 扩展
| 扩展名称 | 功能 |
|---|---|
| Node.js Extension Pack | Node.js 开发扩展合集 |
| ESLint | 代码规范检查 |
| Prettier | 代码格式化 |
| Code Runner | 快速运行代码片段 |
| npm Intellisense | 自动补全 npm 模块名 |
(3) VS Code 内置终端
使用快捷键 Ctrl + ` 打开内置终端,无需在编辑器和终端之间切换。
▶ 示例:配置 VS Code 调试 Node.js
在项目根目录创建 .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/index.js"
}
]
}
按 F5 即可启动调试。
7. nvm 管理多版本 Node.js 流程
flowchart TD
A[安装 nvm] --> B[nvm install 22]
B --> C[nvm install 18]
C --> D[nvm use 22]
D --> E{项目切换?}
E -->|进入项目 A| F[nvm use 22]
E -->|进入项目 B| G[nvm use 18]
F --> H[node --version 验证]
G --> H
H --> I[运行项目]
I --> E
8. 综合示例:从零创建 Node.js 项目
以下演示从安装 Node.js 到运行第一个脚本的完整流程:
# 1. 安装并切换到 Node.js 22 LTS
nvm install 22
nvm use 22
# 2. 验证安装
node --version
npm --version
v22.11.0
10.9.0
# 3. 创建项目目录并初始化
mkdir bob-project
cd bob-project
npm init -y
创建 index.js:
const projectName = require('./package.json').name;
const version = process.version;
console.log(`Project: ${projectName}`);
console.log(`Node.js: ${version}`);
console.log(`Directory: ${process.cwd()}`);
const items = ['setup', 'config', 'deploy'];
items.forEach((item, index) => {
console.log(`Step ${index + 1}: ${item}`);
});
运行项目:
node index.js
Project: bob-project
Node.js: v22.11.0
Directory: /home/bob/bob-project
Step 1: setup
Step 2: config
Step 3: deploy
❓ 常见问题
📖 小节
- nvm 是管理多版本 Node.js 的首选工具,支持安装、切换、设置默认版本
node --version和npm --version用于验证安装是否成功- REPL 提供交互式执行环境,适合快速测试代码片段
- 使用
node <file>运行 JavaScript 脚本,process.argv获取命令行参数 npm init -y快速创建 package.json,是项目初始化的第一步- VS Code + Node.js 扩展是最主流的开发工具组合
📝 作业
- 使用 nvm 安装 Node.js 22 LTS,并将其设为默认版本
- 进入 REPL,定义一个函数计算数组中所有偶数的和,并验证结果
- 创建一个项目目录,使用
npm init -y初始化,然后修改 package.json 中的name和description字段 - 编写一个脚本
info.js,输出当前 Node.js 版本、操作系统平台(process.platform)和运行时间(process.uptime()) - 在 VS Code 中安装 Node.js Extension Pack,配置 launch.json 并成功调试运行一个脚本