# GoFaster 环境兼容性检查脚本 # 检查当前环境是否满足运行要求 Write-Host "========================================" -ForegroundColor Cyan Write-Host " GoFaster 环境兼容性检查" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "" # 检查 Node.js 版本 Write-Host "检查 Node.js 版本..." -ForegroundColor Yellow try { $nodeVersion = node --version Write-Host "Node.js 版本: $nodeVersion" -ForegroundColor Green # 检查版本兼容性 if ($nodeVersion -match "v(\d+)") { $majorVersion = [int]$matches[1] if ($majorVersion -lt 16) { Write-Host "⚠️ 警告: Node.js 版本过低,推荐使用 v16 或更高版本" -ForegroundColor Yellow } elseif ($majorVersion -gt 20) { Write-Host "⚠️ 警告: Node.js 版本过高,可能存在兼容性问题" -ForegroundColor Yellow } else { Write-Host "✅ Node.js 版本兼容" -ForegroundColor Green } } } catch { Write-Host "❌ Node.js 未安装或不可用" -ForegroundColor Red } Write-Host "" # 检查 npm 版本 Write-Host "检查 npm 版本..." -ForegroundColor Yellow try { $npmVersion = npm --version Write-Host "npm 版本: $npmVersion" -ForegroundColor Green # 检查版本兼容性 if ($npmVersion -match "(\d+)") { $majorVersion = [int]$matches[1] if ($majorVersion -lt 8) { Write-Host "⚠️ 警告: npm 版本过低,推荐使用 v8 或更高版本" -ForegroundColor Yellow } elseif ($majorVersion -gt 10) { Write-Host "⚠️ 警告: npm 版本过高,可能存在兼容性问题" -ForegroundColor Yellow } else { Write-Host "✅ npm 版本兼容" -ForegroundColor Green } } } catch { Write-Host "❌ npm 未安装或不可用" -ForegroundColor Red } Write-Host "" # 检查 Go 版本 Write-Host "检查 Go 版本..." -ForegroundColor Yellow try { $goVersion = go version Write-Host "Go 版本: $goVersion" -ForegroundColor Green # 检查版本兼容性 if ($goVersion -match "go(\d+\.\d+)") { $version = [version]$matches[1] if ($version -lt [version]"1.20") { Write-Host "⚠️ 警告: Go 版本过低,推荐使用 v1.20 或更高版本" -ForegroundColor Yellow } elseif ($version -gt [version]"1.25") { Write-Host "⚠️ 警告: Go 版本过高,可能存在兼容性问题" -ForegroundColor Yellow } else { Write-Host "✅ Go 版本兼容" -ForegroundColor Green } } } catch { Write-Host "❌ Go 未安装或不可用" -ForegroundColor Red } Write-Host "" # 检查项目结构 Write-Host "检查项目结构..." -ForegroundColor Yellow $requiredDirs = @("app", "backend") $missingDirs = @() foreach ($dir in $requiredDirs) { if (Test-Path $dir) { Write-Host "✅ 目录存在: $dir" -ForegroundColor Green } else { Write-Host "❌ 目录缺失: $dir" -ForegroundColor Red $missingDirs += $dir } } Write-Host "" # 检查前端依赖 Write-Host "检查前端依赖..." -ForegroundColor Yellow if (Test-Path "app/package.json") { Write-Host "✅ 前端 package.json 存在" -ForegroundColor Green if (Test-Path "app/node_modules") { Write-Host "✅ 前端依赖已安装" -ForegroundColor Green } else { Write-Host "⚠️ 前端依赖未安装,需要运行: cd app && npm install" -ForegroundColor Yellow } } else { Write-Host "❌ 前端 package.json 不存在" -ForegroundColor Red } Write-Host "" # 检查后端依赖 Write-Host "检查后端依赖..." -ForegroundColor Yellow if (Test-Path "backend/go.mod") { Write-Host "✅ 后端 go.mod 存在" -ForegroundColor Green } else { Write-Host "❌ 后端 go.mod 不存在" -ForegroundColor Red } Write-Host "" # 检查端口占用 Write-Host "检查端口占用..." -ForegroundColor Yellow $ports = @(8080, 3000) foreach ($port in $ports) { $processes = netstat -ano 2>$null | Select-String ":$port\s" if ($processes) { Write-Host "⚠️ 端口 $port 被占用" -ForegroundColor Yellow } else { Write-Host "✅ 端口 $port 可用" -ForegroundColor Green } } Write-Host "" Write-Host "========================================" -ForegroundColor Cyan Write-Host "检查完成!" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan # 提供修复建议 if ($missingDirs.Count -gt 0) { Write-Host "" Write-Host "🔧 修复建议:" -ForegroundColor Yellow Write-Host " 1. 确保项目结构完整" -ForegroundColor White Write-Host " 2. 重新克隆或下载项目" -ForegroundColor White } Write-Host "" Write-Host "💡 启动建议:" -ForegroundColor Cyan Write-Host " 1. 使用 .\start-enhanced.ps1 启动完整环境" -ForegroundColor White Write-Host " 2. 使用 .\start-enhanced.ps1 -BackendOnly 仅启动后端" -ForegroundColor White Write-Host " 3. 使用 .\start-enhanced.ps1 -FrontendOnly 仅启动前端" -ForegroundColor White Write-Host " 4. 使用 .\start-enhanced.ps1 -ForceClean 强制清理后启动" -ForegroundColor White