# Prisma 客户端修复脚本(Windows PowerShell) # 使用方法:.\fix-prisma.ps1 param( [string]$ServerIP, [string]$ServerUser = "root", [string]$ProjectPath = "/www/wwwroot/sucai" ) Write-Host "==========================================" Write-Host " Prisma 客户端修复工具" Write-Host "==========================================" Write-Host "" if ($ServerIP) { # 远程修复模式 Write-Host "🌐 远程修复模式" Write-Host "服务器: ${ServerUser}@${ServerIP}" Write-Host "路径: $ProjectPath" Write-Host "" Write-Host "[1/3] 上传修复脚本..." scp fix-prisma.sh "${ServerUser}@${ServerIP}:${ProjectPath}/" if ($LASTEXITCODE -eq 0) { Write-Host "✅ 上传成功" } else { Write-Host "❌ 上传失败" exit 1 } Write-Host "" Write-Host "[2/3] 执行修复脚本..." ssh "${ServerUser}@${ServerIP}" "cd $ProjectPath && bash fix-prisma.sh" Write-Host "" Write-Host "[3/3] 验证结果..." $VerifyCmd = "ssh ${ServerUser}@${ServerIP} 'cd $ProjectPath && test -f node_modules/.prisma/client/index.js && echo SUCCESS || echo FAILED'" $Result = Invoke-Expression $VerifyCmd if ($Result -match "SUCCESS") { Write-Host "✅ Prisma 客户端已成功生成" } else { Write-Host "❌ Prisma 客户端生成失败" } } else { # 本地修复模式 Write-Host "💻 本地修复模式" Write-Host "" # 检查是否在项目目录 if (!(Test-Path "package.json")) { Write-Host "❌ 错误: 未找到 package.json" Write-Host "请在项目根目录运行此脚本" exit 1 } Write-Host "[1/6] 检查 Node.js 版本..." $NodeVersion = node -v Write-Host "Node.js: $NodeVersion" Write-Host "" Write-Host "[2/6] 检查 Prisma Schema..." if (Test-Path "prisma\schema.prisma") { Write-Host "✅ Schema 文件存在" } else { Write-Host "❌ Schema 文件不存在" exit 1 } Write-Host "" Write-Host "[3/6] 清理旧的 Prisma 生成文件..." if (Test-Path "node_modules\.prisma") { Remove-Item -Recurse -Force "node_modules\.prisma" } if (Test-Path "node_modules\@prisma") { Remove-Item -Recurse -Force "node_modules\@prisma" } Write-Host "✅ 清理完成" Write-Host "" Write-Host "[4/6] 检查环境变量..." if (Test-Path ".env") { Write-Host "✅ .env 文件存在" $EnvContent = Get-Content ".env" if ($EnvContent -match "DATABASE_URL") { Write-Host "✅ DATABASE_URL 已配置" } else { Write-Host "⚠️ 警告: DATABASE_URL 未配置" } } else { Write-Host "⚠️ 警告: .env 文件不存在" } Write-Host "" Write-Host "[5/6] 重新安装 Prisma 依赖..." Write-Host "⏳ 这可能需要一些时间..." npm install @prisma/client prisma --save if ($LASTEXITCODE -eq 0) { Write-Host "✅ Prisma 依赖安装成功" } else { Write-Host "❌ Prisma 依赖安装失败" exit 1 } Write-Host "" Write-Host "[6/6] 生成 Prisma 客户端..." Write-Host "⏳ 正在生成..." npx prisma generate if ($LASTEXITCODE -eq 0) { Write-Host "✅ Prisma 客户端生成成功" } else { Write-Host "❌ Prisma 客户端生成失败" exit 1 } Write-Host "" Write-Host "==========================================" Write-Host " ✅ 修复完成!" Write-Host "==========================================" Write-Host "" if (Test-Path "node_modules\.prisma\client") { $Size = (Get-ChildItem "node_modules\.prisma\client" -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB Write-Host "📊 生成的文件大小: $([math]::Round($Size, 2)) MB" } Write-Host "" Write-Host "🎯 下一步:" Write-Host " npm run dev # 启动开发服务器" Write-Host " npm run build # 构建项目" Write-Host " npx prisma studio # 打开数据库管理界面" Write-Host "" }