flnxi-Wu/scripts/tools/fix-prisma.ps1
WuYongJie f646b71813
Some checks failed
CI Check / check (push) Has been cancelled
chore: 初始化本地仓库并同步最近改动
2025-11-18 17:50:16 +08:00

144 lines
4.2 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 ""
}