Node.js完整安裝配置指南(包含國內鏡像配置)
一、Node.js安裝
方法1:使用Chocolatey安裝(推薦)
# 安裝最新LTS版本
choco install nodejs# 或安裝指定版本
choco install nodejs --version=20.11.0
方法2:官網下載安裝
- 訪問 Node.js官網
- 下載LTS版本(推薦)
- 運行安裝程序,勾選"Add to PATH"選項
方法3:使用國內鏡像下載
# 從淘寶鏡像下載
# 訪問: https://npmmirror.com/mirrors/node/
# 選擇對應版本下載
二、驗證安裝
# 檢查Node.js版本
node --version
# 或
node -v# 檢查npm版本
npm --version
# 或
npm -v
三、國內鏡像源配置
3.1 淘寶鏡像(npmmirror)
# 設置淘寶鏡像
npm config set registry https://registry.npmmirror.com# 驗證配置
npm config get registry
3.2 中科大鏡像
# 設置中科大鏡像
npm config set registry https://npmreg.proxy.ustclug.org/# 驗證配置
npm config get registry
3.3 清華大學鏡像
# 設置清華鏡像
npm config set registry https://mirrors.tuna.tsinghua.edu.cn/npm/# 驗證配置
npm config get registry
3.4 華為云鏡像
# 設置華為云鏡像
npm config set registry https://mirrors.huaweicloud.com/repository/npm/# 驗證配置
npm config get registry
3.5 騰訊云鏡像
# 設置騰訊云鏡像
npm config set registry https://mirrors.cloud.tencent.com/npm/# 驗證配置
npm config get registry
四、鏡像切換腳本
4.1 創建鏡像切換批處理文件
創建文件 npm_registry_switch.bat
:
@echo off
echo 選擇npm鏡像源:
echo 1. 官方源 (默認)
echo 2. 淘寶鏡像 (npmmirror)
echo 3. 中科大鏡像
echo 4. 清華大學鏡像
echo 5. 華為云鏡像
echo 6. 騰訊云鏡像
echo 7. 查看當前鏡像源
echo.set /p choice=請輸入選擇 (1-7): if "%choice%"=="1" (npm config set registry https://registry.npmjs.org/echo 已切換到官方源
) else if "%choice%"=="2" (npm config set registry https://registry.npmmirror.comecho 已切換到淘寶鏡像
) else if "%choice%"=="3" (npm config set registry https://npmreg.proxy.ustclug.org/echo 已切換到中科大鏡像
) else if "%choice%"=="4" (npm config set registry https://mirrors.tuna.tsinghua.edu.cn/npm/echo 已切換到清華大學鏡像
) else if "%choice%"=="5" (npm config set registry https://mirrors.huaweicloud.com/repository/npm/echo 已切換到華為云鏡像
) else if "%choice%"=="6" (npm config set registry https://mirrors.cloud.tencent.com/npm/echo 已切換到騰訊云鏡像
) else if "%choice%"=="7" (echo 當前鏡像源:npm config get registry
) else (echo 無效選擇
)echo.
echo 當前配置:
npm config get registry
pause
4.2 PowerShell版本切換腳本
創建文件 Switch-NpmRegistry.ps1
:
function Switch-NpmRegistry {param([Parameter(Mandatory=$false)][string]$Registry)$registries = @{"npm" = "https://registry.npmjs.org/""taobao" = "https://registry.npmmirror.com""ustc" = "https://npmreg.proxy.ustclug.org/""tsinghua" = "https://mirrors.tuna.tsinghua.edu.cn/npm/""huawei" = "https://mirrors.huaweicloud.com/repository/npm/""tencent" = "https://mirrors.cloud.tencent.com/npm/"}if (-not $Registry) {Write-Host "可用的鏡像源:" -ForegroundColor Green$registries.GetEnumerator() | ForEach-Object {Write-Host " $($_.Key): $($_.Value)" -ForegroundColor Yellow}Write-Host ""Write-Host "當前鏡像源: $(npm config get registry)" -ForegroundColor Cyanreturn}if ($registries.ContainsKey($Registry.ToLower())) {$url = $registries[$Registry.ToLower()]npm config set registry $urlWrite-Host "已切換到 $Registry 鏡像: $url" -ForegroundColor Green} else {Write-Host "未知的鏡像源: $Registry" -ForegroundColor RedWrite-Host "可用選項: $($registries.Keys -join ', ')" -ForegroundColor Yellow}
}# 使用示例:
# Switch-NpmRegistry taobao # 切換到淘寶鏡像
# Switch-NpmRegistry # 顯示所有可用鏡像
五、環境變量配置
5.1 檢查現有環境變量
# 檢查PATH中是否包含Node.js
echo $env:PATH | Select-String "node"# 或在CMD中
echo %PATH% | findstr node
5.2 手動配置環境變量
如果Node.js沒有自動添加到PATH,需要手動添加:
-
通過系統設置配置:
- 按
Win + R
,輸入sysdm.cpl
- 點擊"高級"選項卡 → “環境變量”
- 在"系統變量"中找到"Path",點擊"編輯"
- 添加Node.js安裝路徑(通常是
C:\Program Files\nodejs\
)
- 按
-
通過PowerShell配置:
# 臨時添加到當前會話
$env:PATH += ";C:\Program Files\nodejs\"# 永久添加到用戶環境變量
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Program Files\nodejs\", "User")# 永久添加到系統環境變量(需要管理員權限)
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Program Files\nodejs\", "Machine")
5.3 配置npm全局模塊路徑
# 查看npm配置
npm config list# 設置全局模塊安裝路徑
npm config set prefix "C:\Users\%USERNAME%\AppData\Roaming\npm"# 或者設置到自定義路徑
npm config set prefix "D:\nodejs\npm-global"
六、npm配置優化
6.1 完整的npm配置
# 設置鏡像源(選擇一個)
npm config set registry https://registry.npmmirror.com# 設置緩存路徑
npm config set cache "D:\nodejs\npm-cache"# 設置全局模塊路徑
npm config set prefix "D:\nodejs\npm-global"# 設置代理(如果需要)
# npm config set proxy http://proxy.company.com:8080
# npm config set https-proxy http://proxy.company.com:8080# 設置嚴格SSL(建議保持true)
npm config set strict-ssl true# 設置日志級別
npm config set loglevel warn# 設置進度條顯示
npm config set progress true
6.2 查看和重置配置
# 查看所有配置
npm config list# 查看完整配置(包括默認值)
npm config list -l# 重置到默認配置
npm config delete registry
npm config delete cache
npm config delete prefix# 或直接編輯配置文件
npm config edit
七、常用鏡像測速腳本
創建文件 npm_speed_test.js
:
const { execSync } = require('child_process');
const registries = {'npm官方源': 'https://registry.npmjs.org/','淘寶鏡像': 'https://registry.npmmirror.com','中科大鏡像': 'https://npmreg.proxy.ustclug.org/','清華鏡像': 'https://mirrors.tuna.tsinghua.edu.cn/npm/','華為云鏡像': 'https://mirrors.huaweicloud.com/repository/npm/','騰訊云鏡像': 'https://mirrors.cloud.tencent.com/npm/'
};async function testSpeed(name, url) {try {const start = Date.now();execSync(`npm ping --registry ${url}`, { stdio: 'pipe', timeout: 10000 });const end = Date.now();return end - start;} catch (error) {return Infinity;}
}async function testAllRegistries() {console.log('正在測試各鏡像源速度...\n');const results = [];for (const [name, url] of Object.entries(registries)) {process.stdout.write(`測試 ${name}... `);const time = await testSpeed(name, url);if (time === Infinity) {console.log('? 超時或失敗');results.push({ name, url, time: Infinity, status: 'failed' });} else {console.log(`? ${time}ms`);results.push({ name, url, time, status: 'success' });}}// 按速度排序results.sort((a, b) => a.time - b.time);console.log('\n=== 測試結果(按速度排序)===');results.forEach((result, index) => {if (result.status === 'success') {console.log(`${index + 1}. ${result.name}: ${result.time}ms`);console.log(` ${result.url}`);}});console.log('\n推薦使用最快的鏡像源。');if (results[0].status === 'success') {console.log(`\n執行以下命令切換到最快的鏡像源:`);console.log(`npm config set registry ${results[0].url}`);}
}testAllRegistries();
運行測試:
node npm_speed_test.js
八、使用nrm管理鏡像源
8.1 安裝nrm
# 全局安裝nrm
npm install -g nrm
8.2 使用nrm
# 列出可用鏡像源
nrm ls# 測試所有鏡像源速度
nrm test# 切換到指定鏡像源
nrm use taobao# 添加自定義鏡像源
nrm add custom https://your-registry.com/# 刪除鏡像源
nrm del custom# 查看當前鏡像源
nrm current
九、故障排除
9.1 常見問題及解決方案
問題1:npm命令不被識別
# 解決方案:重新添加環境變量
refreshenv # 如果使用Chocolatey
# 或重啟命令行/PowerShell
問題2:權限錯誤
# 解決方案:以管理員身份運行
# 或配置npm使用不同的目錄
npm config set prefix "C:\Users\%USERNAME%\AppData\Roaming\npm"
問題3:網絡連接問題
# 解決方案:切換鏡像源
npm config set registry https://registry.npmmirror.com# 或配置代理
npm config set proxy http://your-proxy:port
npm config set https-proxy http://your-proxy:port
9.2 清理和重置
# 清理npm緩存
npm cache clean --force# 清理node_modules
rm -rf node_modules
rm package-lock.json
npm install# 重置npm配置
npm config delete registry
npm config delete proxy
npm config delete https-proxy
十、驗證安裝和配置
# 最終驗證命令
node --version
npm --version
npm config get registry
npm config get prefix# 測試安裝包
npm install -g npm@latest# 創建測試項目
mkdir test-node
cd test-node
npm init -y
npm install lodash
node -e "console.log(require('lodash').VERSION)"
十一、推薦的完整配置命令
# 一鍵配置腳本(推薦配置)
npm config set registry https://registry.npmmirror.com
npm config set cache "C:\Users\%USERNAME%\.npm"
npm config set prefix "C:\Users\%USERNAME%\AppData\Roaming\npm"
npm config set progress true
npm config set loglevel warn# 驗證配置
npm config list
echo "Node.js和npm配置完成!"
注意事項:
- 優先推薦使用淘寶鏡像(npmmirror),穩定性和速度都比較好
- 如果在企業環境,可能需要配置代理
- 定期運行
npm update -g
更新全局包 - 建議使用Node.js LTS版本以確保穩定性
🚀 快速開始(推薦步驟)
- 安裝Node.js:
choco install nodejs
- 配置淘寶鏡像(最穩定):
npm config set registry https://registry.npmmirror.com
- 驗證安裝:
node --version
npm --version
npm config get registry
🔧 解決PowerShell執行策略問題
方法1:修改PowerShell執行策略(推薦)
# 以管理員身份運行PowerShell,然后執行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser# 或者更寬松的策略:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
方法2:使用CMD而不是PowerShell
# 打開CMD(命令提示符)而不是PowerShell
# 按Win+R,輸入cmd,然后運行npm命令npm --version
npm config set registry https://registry.npmmirror.com
方法3:刷新環境變量
# 在PowerShell中刷新環境變量
refreshenv# 然后再試npm命令
方法4:使用完整路徑
# 直接使用npm.cmd而不是npm.ps1
& "C:\Program Files\nodejs\npm.cmd" --version
& "C:\Program Files\nodejs\npm.cmd" config set registry https://registry.npmmirror.com
🚀 完整解決步驟## 🎯 立即解決方案
您的Node.js安裝成功了!現在遇到的是PowerShell執行策略問題。有3個快速解決方案:
方案1:使用CMD(最簡單)
# 按 Win+R,輸入 cmd,回車打開CMD
npm --version
npm config set registry https://registry.npmmirror.com
npm config get registry
方案2:在PowerShell中修改執行策略
# 在當前PowerShell中執行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 然后就可以正常使用npm了
方案3:在PowerShell中使用npm.cmd
# 使用npm.cmd而不是npm
npm.cmd --version
npm.cmd config set registry https://registry.npmmirror.com
npm.cmd config get registry
🚀 推薦立即執行
我建議您現在就用方案1(CMD),因為最簡單快速:
- 打開CMD:按
Win+R
→ 輸入cmd
→ 回車 - 執行配置:
npm --version
npm config set registry https://registry.npmmirror.com
npm config set cache "C:\Users\Administrator\.npm"
npm config set prefix "C:\Users\Administrator\AppData\Roaming\npm"
npm config list
- 測試安裝:
npm install -g npm@latest
解決npm PowerShell執行策略問題
問題描述
Node.js安裝成功,但在PowerShell中運行npm命令時出現執行策略錯誤:
npm : 無法加載文件 D:\Program Files\nodejs\npm.ps1,因為在此系統上禁止運行腳本
解決方案
方案1:修改PowerShell執行策略(推薦)
步驟1:以管理員身份打開PowerShell
# 右鍵點擊開始菜單 → Windows PowerShell (管理員)
步驟2:檢查當前執行策略
Get-ExecutionPolicy
步驟3:修改執行策略
# 選擇以下任一命令:# 選項A:僅允許本地腳本和已簽名的遠程腳本(推薦)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser# 選項B:允許所有腳本(如果A不行)
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser# 選項C:系統級設置(需要管理員權限)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
步驟4:驗證修改
Get-ExecutionPolicy
npm --version
方案2:使用CMD(立即可用)
步驟1:打開CMD
# 按 Win + R,輸入 cmd,按回車
步驟2:測試npm
npm --version
npm config set registry https://registry.npmmirror.com
npm config get registry
方案3:在PowerShell中使用.cmd文件
# 直接調用npm.cmd而不是npm.ps1
& "npm.cmd" --version
& "npm.cmd" config set registry https://registry.npmmirror.com# 或者使用完整路徑
& "C:\Program Files\nodejs\npm.cmd" --version
方案4:創建PowerShell別名
# 在PowerShell配置文件中添加別名
if (!(Test-Path -Path $PROFILE)) {New-Item -ItemType File -Path $PROFILE -Force
}Add-Content -Path $PROFILE -Value 'function npm { & "npm.cmd" @args }'
Add-Content -Path $PROFILE -Value 'function npx { & "npx.cmd" @args }'# 重新加載配置
. $PROFILE
快速驗證腳本
創建測試腳本 test_npm.bat
@echo off
echo ========== Node.js 和 npm 測試 ==========
echo.
echo 1. 檢查Node.js版本:
node --version
echo.
echo 2. 檢查npm版本:
npm.cmd --version
echo.
echo 3. 設置淘寶鏡像:
npm.cmd config set registry https://registry.npmmirror.com
echo.
echo 4. 驗證鏡像設置:
npm.cmd config get registry
echo.
echo 5. 測試npm安裝(安裝一個小包):
npm.cmd install -g npm@latest
echo.
echo ========== 測試完成 ==========
pause
PowerShell一鍵修復腳本
# 保存為 Fix-NpmPowerShell.ps1
Write-Host "正在修復npm PowerShell執行策略問題..." -ForegroundColor Green# 檢查當前執行策略
$currentPolicy = Get-ExecutionPolicy
Write-Host "當前執行策略: $currentPolicy" -ForegroundColor Yellow# 如果是Restricted,則修改
if ($currentPolicy -eq "Restricted") {try {Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -ForceWrite-Host "? 執行策略已修改為 RemoteSigned" -ForegroundColor Green}catch {Write-Host "? 修改執行策略失敗,請以管理員身份運行" -ForegroundColor RedWrite-Host "手動執行: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser" -ForegroundColor Yellow}
}# 刷新環境變量
if (Get-Command refreshenv -ErrorAction SilentlyContinue) {refreshenvWrite-Host "? 環境變量已刷新" -ForegroundColor Green
}# 測試npm
Write-Host "`n正在測試npm..." -ForegroundColor Cyan
try {$nodeVersion = node --versionWrite-Host "Node.js版本: $nodeVersion" -ForegroundColor Green$npmVersion = npm --versionWrite-Host "npm版本: $npmVersion" -ForegroundColor GreenWrite-Host "? npm工作正常!" -ForegroundColor Green
}
catch {Write-Host "?? npm仍有問題,建議使用CMD或npm.cmd" -ForegroundColor YellowWrite-Host "備用方案: 使用 'npm.cmd' 而不是 'npm'" -ForegroundColor Yellow
}Write-Host "`n修復完成!" -ForegroundColor Green
推薦的最終配置
在CMD中執行(最穩定):
REM 1. 驗證安裝
node --version
npm --versionREM 2. 配置淘寶鏡像
npm config set registry https://registry.npmmirror.comREM 3. 配置其他設置
npm config set cache "C:\Users\%USERNAME%\.npm"
npm config set prefix "C:\Users\%USERNAME%\AppData\Roaming\npm"REM 4. 驗證配置
npm config listREM 5. 測試安裝包
npm install -g npm@latest
或在PowerShell中使用.cmd版本:
# 1. 驗證安裝
node --version
npm.cmd --version# 2. 配置鏡像
npm.cmd config set registry https://registry.npmmirror.com# 3. 驗證配置
npm.cmd config get registry
故障排除
如果仍然有問題:
-
重啟命令行工具
-
檢查環境變量:
$env:PATH -split ';' | Where-Object { $_ -like "*node*" }
-
手動添加到PATH:
$env:PATH += ";C:\Program Files\nodejs\"
-
使用完整路徑:
& "C:\Program Files\nodejs\npm.cmd" --version
總結
最簡單的解決方案:
- 使用CMD而不是PowerShell進行npm操作
- 或者在PowerShell中使用
npm.cmd
而不是npm
- 長期解決:修改PowerShell執行策略