Skip to content

3.2 安装Node.js环境

🎯 学习目标:掌握在不同操作系统上安装和配置Node.js开发环境
⏱️ 预计时间:25分钟
📊 难度等级:⭐⭐

🤔 为什么需要Node.js?

Node.js是MCP生态系统的核心基础,因为:

  • 🔧 MCP SDK主要基于JavaScript/TypeScript
  • 📦 丰富的npm包生态
  • 异步I/O特性适合网络通信
  • 🌐 前后端统一的开发体验
  • 🔄 活跃的开源社区支持

📋 Node.js版本选择

🎯 推荐版本

版本类型版本号特点推荐指数适用场景
LTS (Long Term Support)20.x稳定、长期支持⭐⭐⭐⭐⭐生产环境、学习
Current21.x最新特性⭐⭐⭐尝鲜、开发测试
旧LTS18.x兼容性好⭐⭐⭐⭐企业环境

💡 建议:初学者选择当前LTS版本(Node.js 20.x),它提供了最佳的稳定性和功能平衡。

🔍 版本检查

安装前,先检查系统是否已有Node.js:

bash
# 检查Node.js版本
node --version
# 或者
node -v

# 检查npm版本
npm --version
# 或者
npm -v

如果显示版本号,说明已安装。如果版本过旧(< 18.0),建议升级。

🖥️ 不同操作系统的安装方法

🐧 Linux系统安装

方法1:使用包管理器(推荐)

Ubuntu/Debian系统:

bash
# 更新包列表
sudo apt update

# 安装Node.js和npm
sudo apt install -y nodejs npm

# 验证安装
node --version
npm --version

CentOS/RHEL系统:

bash
# 安装Node.js和npm
sudo dnf install -y nodejs npm
# 或者使用yum (旧版本)
sudo yum install -y nodejs npm

# 验证安装
node --version
npm --version

方法2:使用NodeSource仓库(获取最新版本)

bash
# 添加NodeSource仓库(以Node.js 20.x为例)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# 安装Node.js
sudo apt-get install -y nodejs

# 验证安装
node --version

方法3:使用Snap(Ubuntu)

bash
# 安装最新LTS版本
sudo snap install node --classic

# 验证安装
node --version

🍎 macOS系统安装

方法1:使用Homebrew(推荐)

如果还没有安装Homebrew:

bash
# 安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装Node.js:

bash
# 安装Node.js(会同时安装npm)
brew install node

# 验证安装
node --version
npm --version

方法2:使用官方安装包

  1. 访问 Node.js官网
  2. 下载macOS安装包(.pkg文件)
  3. 双击运行安装程序
  4. 按提示完成安装

方法3:使用MacPorts

bash
# 安装Node.js
sudo port install nodejs20 +universal

# 验证安装
node --version

🪟 Windows系统安装

方法1:使用官方安装包(推荐新手)

  1. 下载安装包

    • 访问 Node.js官网
    • 下载Windows安装包(.msi文件)
    • 选择LTS版本
  2. 运行安装程序

    📋 安装选项说明:
    ✅ Node.js runtime - 必选
    ✅ npm package manager - 必选  
    ✅ Online documentation shortcuts - 可选
    ✅ Add to PATH - 必选(重要!)
  3. 验证安装

    powershell
    # 打开PowerShell或命令提示符
    node --version
    npm --version

方法2:使用Chocolatey

如果还没有安装Chocolatey:

powershell
# 以管理员身份运行PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

安装Node.js:

powershell
# 安装Node.js
choco install nodejs

# 验证安装
node --version
npm --version

方法3:使用Winget(Windows 10/11)

powershell
# 安装Node.js
winget install OpenJS.NodeJS

# 验证安装
node --version
npm --version

方法4:使用Scoop

powershell
# 如果没有Scoop,先安装
iwr -useb get.scoop.sh | iex

# 安装Node.js
scoop install nodejs

# 验证安装
node --version
npm --version

🔧 高级安装选项

📦 使用Node版本管理器

版本管理器允许你在同一系统上安装和切换多个Node.js版本,这对开发非常有用。

NVM (Node Version Manager) - Linux/macOS

安装nvm:

bash
# 下载并安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 重新加载bash配置
source ~/.bashrc
# 或者
source ~/.zshrc

# 验证nvm安装
nvm --version

使用nvm:

bash
# 查看可用的Node.js版本
nvm list-remote

# 安装最新LTS版本
nvm install --lts

# 安装特定版本
nvm install 20.10.0

# 切换版本
nvm use 20.10.0

# 设置默认版本
nvm alias default 20.10.0

# 查看已安装版本
nvm list

nvm-windows - Windows

  1. 下载安装

  2. 使用nvm-windows

    powershell
    # 查看可用版本
    nvm list available
    
    # 安装LTS版本
    nvm install lts
    
    # 使用特定版本
    nvm use 20.10.0
    
    # 查看已安装版本
    nvm list

Volta - 跨平台版本管理器

安装Volta:

bash
# Linux/macOS
curl https://get.volta.sh | bash

# Windows (PowerShell)
iwr https://get.volta.sh | iex

使用Volta:

bash
# 安装Node.js
volta install node@20

# 为项目固定版本
volta pin node@20

# 查看当前版本
volta list

🛠️ 安装后配置

📝 配置npm

设置npm镜像源(中国用户推荐)

由于网络原因,建议配置国内镜像源:

bash
# 查看当前配置
npm config get registry

# 设置淘宝镜像
npm config set registry https://registry.npmmirror.com

# 或者使用cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com

# 验证配置
npm config get registry

配置npm全局包安装路径

Linux/macOS:

bash
# 创建全局包目录
mkdir ~/.npm-global

# 配置npm使用新目录
npm config set prefix '~/.npm-global'

# 添加到PATH(添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Windows:

powershell
# 创建全局包目录
mkdir $env:USERPROFILE\npm-global

# 配置npm
npm config set prefix $env:USERPROFILE\npm-global

# 添加到PATH环境变量(需要重新打开终端)
$env:PATH += ";$env:USERPROFILE\npm-global"

🔐 权限配置

Linux/macOS权限问题解决

如果遇到权限错误,有几种解决方案:

方案1:使用上面的npm全局目录配置

方案2:修改npm默认目录权限

bash
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

方案3:使用Node版本管理器(最推荐)

bash
# 使用nvm安装的Node.js不会有权限问题
nvm install node

✅ 验证安装

🧪 完整验证脚本

创建一个验证脚本来检查安装:

bash
#!/bin/bash
# verify-nodejs.sh - Node.js安装验证脚本

echo "🔍 Node.js环境验证"
echo "==================="

# 检查Node.js
if command -v node &> /dev/null; then
    NODE_VERSION=$(node --version)
    echo "✅ Node.js: $NODE_VERSION"
    
    # 检查版本是否合适
    NODE_MAJOR=$(echo $NODE_VERSION | cut -d'.' -f1 | sed 's/v//')
    if [ $NODE_MAJOR -ge 18 ]; then
        echo "   📋 版本符合要求 (>= 18.0)"
    else
        echo "   ⚠️  版本过低,建议升级到18.0+)"
    fi
else
    echo "❌ Node.js未安装"
    exit 1
fi

# 检查npm
if command -v npm &> /dev/null; then
    NPM_VERSION=$(npm --version)
    echo "✅ npm: v$NPM_VERSION"
else
    echo "❌ npm未安装"
    exit 1
fi

# 检查npm配置
NPM_REGISTRY=$(npm config get registry)
echo "📋 npm镜像源: $NPM_REGISTRY"

# 检查权限
echo "🔐 检查npm权限..."
if npm list -g --depth=0 &> /dev/null; then
    echo "✅ npm权限正常"
else
    echo "⚠️  npm权限可能有问题"
fi

# 测试创建简单项目
echo "🧪 创建测试项目..."
TEST_DIR="/tmp/mcp-test-$$"
mkdir -p $TEST_DIR
cd $TEST_DIR

if npm init -y &> /dev/null; then
    echo "✅ 项目创建成功"
    rm -rf $TEST_DIR
else
    echo "❌ 项目创建失败"
    rm -rf $TEST_DIR
    exit 1
fi

echo "==================="
echo "🎉 Node.js环境验证通过!"

Windows PowerShell版本:

powershell
# verify-nodejs.ps1 - Windows Node.js验证脚本

Write-Host "🔍 Node.js环境验证" -ForegroundColor Green
Write-Host "==================="

# 检查Node.js
try {
    $nodeVersion = node --version
    Write-Host "✅ Node.js: $nodeVersion" -ForegroundColor Green
    
    # 检查版本
    $majorVersion = [int]($nodeVersion -replace 'v(\d+)\..*', '$1')
    if ($majorVersion -ge 18) {
        Write-Host "   📋 版本符合要求 (>= 18.0)" -ForegroundColor Green
    } else {
        Write-Host "   ⚠️  版本过低,建议升级到18.0+" -ForegroundColor Yellow
    }
} catch {
    Write-Host "❌ Node.js未安装" -ForegroundColor Red
    exit 1
}

# 检查npm
try {
    $npmVersion = npm --version
    Write-Host "✅ npm: v$npmVersion" -ForegroundColor Green
} catch {
    Write-Host "❌ npm未安装" -ForegroundColor Red
    exit 1
}

# 检查npm配置
$npmRegistry = npm config get registry
Write-Host "📋 npm镜像源: $npmRegistry" -ForegroundColor Cyan

# 测试项目创建
Write-Host "🧪 创建测试项目..." -ForegroundColor Yellow
$testDir = "$env:TEMP\mcp-test-$(Get-Random)"
New-Item -ItemType Directory -Path $testDir -Force | Out-Null
Set-Location $testDir

try {
    npm init -y | Out-Null
    Write-Host "✅ 项目创建成功" -ForegroundColor Green
    Remove-Item -Recurse -Force $testDir
} catch {
    Write-Host "❌ 项目创建失败" -ForegroundColor Red
    Remove-Item -Recurse -Force $testDir -ErrorAction SilentlyContinue
    exit 1
}

Write-Host "==================="
Write-Host "🎉 Node.js环境验证通过!" -ForegroundColor Green

🎯 基础功能测试

创建一个简单的MCP相关测试:

javascript
// test-mcp-basic.js - 基础MCP环境测试
const { exec } = require('child_process');
const fs = require('fs');
const path = require('path');

console.log('🧪 MCP基础环境测试');
console.log('===================');

// 测试1:检查基础模块
console.log('📋 检查Node.js基础模块...');
try {
    const http = require('http');
    const crypto = require('crypto');
    const events = require('events');
    console.log('✅ 基础模块可用');
} catch (error) {
    console.log('❌ 基础模块问题:', error.message);
    process.exit(1);
}

// 测试2:检查JSON-RPC能力
console.log('📋 检查JSON-RPC处理能力...');
try {
    const testRequest = {
        jsonrpc: '2.0',
        id: 1,
        method: 'test',
        params: { message: 'hello' }
    };
    
    const jsonString = JSON.stringify(testRequest);
    const parsed = JSON.parse(jsonString);
    
    if (parsed.jsonrpc === '2.0' && parsed.method === 'test') {
        console.log('✅ JSON-RPC处理正常');
    } else {
        throw new Error('JSON处理异常');
    }
} catch (error) {
    console.log('❌ JSON-RPC处理问题:', error.message);
    process.exit(1);
}

// 测试3:检查异步处理
console.log('📋 检查异步处理能力...');
const testAsync = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('异步处理成功');
        }, 100);
    });
};

testAsync()
    .then(result => {
        console.log('✅', result);
        console.log('===================');
        console.log('🎉 MCP基础环境测试通过!');
    })
    .catch(error => {
        console.log('❌ 异步处理问题:', error.message);
        process.exit(1);
    });

运行测试:

bash
# 创建测试文件
node test-mcp-basic.js

🚨 常见问题解决

❓ 安装相关问题

Q1: 安装失败,提示"Permission denied"

A: 权限问题,解决方案:

bash
# 方案1:使用版本管理器(推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install node

# 方案2:修改npm权限
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc

Q2: Windows上PATH环境变量未生效

A: 需要重启终端或重新登录:

powershell
# 检查PATH
$env:PATH

# 手动添加(临时)
$env:PATH += ";C:\Program Files\nodejs"

# 永久添加需要在系统设置中配置

Q3: npm速度很慢

A: 配置国内镜像源:

bash
# 使用淘宝镜像
npm config set registry https://registry.npmmirror.com

# 或者使用yarn
npm install -g yarn
yarn config set registry https://registry.npmmirror.com

Q4: 版本冲突问题

A: 使用版本管理器解决:

bash
# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 安装多个版本
nvm install 18
nvm install 20

# 切换版本
nvm use 20

🛠️ 配置优化建议

性能优化

bash
# 增加npm缓存
npm config set cache ~/.npm-cache

# 设置并行安装
npm config set package-lock false  # 如果不需要锁定版本

开发体验优化

bash
# 启用npm自动补全
npm completion >> ~/.bashrc

# 安装有用的全局工具
npm install -g nodemon          # 自动重启开发服务器
npm install -g http-server      # 简单HTTP服务器
npm install -g npm-check-updates # 检查包更新

🎯 本节小结

通过这一小节,你应该已经掌握了:

Node.js版本选择:了解不同版本的特点和适用场景
多平台安装:掌握Linux、macOS、Windows的安装方法
版本管理:学会使用nvm等工具管理多个Node.js版本
安装后配置:npm镜像源、权限配置等优化设置
环境验证:使用脚本验证安装是否成功
问题解决:常见安装问题的解决方案

🔗 验证清单

在进入下一小节之前,请确认:

  • [ ] Node.js版本 >= 18.0
  • [ ] npm正常工作
  • [ ] 配置了合适的镜像源
  • [ ] 解决了权限问题
  • [ ] 通过了基础环境测试

Node.js环境准备完毕!接下来让我们配置Python环境。 🐍


👉 下一小节:3.3 配置Python环境