144 lines
4.2 KiB
PowerShell
144 lines
4.2 KiB
PowerShell
# 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 ""
|
||
}
|
||
|
||
|
||
|