fix: include actionable error details

This commit is contained in:
JetSprow
2026-04-29 15:03:00 +10:00
parent d7681240bb
commit df74723b52
28 changed files with 178 additions and 74 deletions

View File

@@ -58,7 +58,7 @@ async function generateUniqueInviteCode(): Promise<string> {
}
}
throw new Error("邀请码生成失败,请稍后重试");
throw new Error("邀请码生成失败:连续 10 次生成的随机码都已存在,请稍后重试");
}
export async function updateAccountProfile(formData: FormData) {

View File

@@ -33,8 +33,8 @@ async function getProxyPlanForCart(planId: string) {
},
});
if (plan.type !== "PROXY") throw new Error("套餐类型错误");
if (!plan.isActive) throw new Error("套餐已下架");
if (plan.type !== "PROXY") throw new Error(`套餐类型不匹配:${plan.name}${plan.type},不能作为代理套餐加入购物车`);
if (!plan.isActive) throw new Error(`套餐已下架${plan.name} 当前不可购买`);
return plan;
}
@@ -115,8 +115,8 @@ export async function addProxyPlanToCart(
export async function addStreamingPlanToCart(planId: string) {
const session = await requireAuth();
const plan = await prisma.subscriptionPlan.findUniqueOrThrow({ where: { id: planId } });
if (plan.type !== "STREAMING") throw new Error("套餐类型错误");
if (!plan.isActive) throw new Error("套餐已下架");
if (plan.type !== "STREAMING") throw new Error(`套餐类型不匹配:${plan.name}${plan.type},不能作为流媒体套餐加入购物车`);
if (!plan.isActive) throw new Error(`套餐已下架${plan.name} 当前不可购买`);
const availability = await getPlanAvailability(plan, { userId: session.user.id });
if (!availability.available) {

View File

@@ -135,8 +135,8 @@ export async function purchaseProxy(
},
});
if (plan.type !== "PROXY") throw new Error("套餐类型错误");
if (!plan.isActive) throw new Error("套餐已下架");
if (plan.type !== "PROXY") throw new Error(`套餐类型不匹配:${plan.name}${plan.type},不能作为代理套餐购买`);
if (!plan.isActive) throw new Error(`套餐已下架${plan.name} 当前不可购买`);
const price = getPlanPurchasePrice(plan, trafficGb);
@@ -216,8 +216,8 @@ export async function purchaseStreaming(planId: string): Promise<string> {
where: { id: planId },
});
if (plan.type !== "STREAMING") throw new Error("套餐类型错误");
if (!plan.isActive) throw new Error("套餐已下架");
if (plan.type !== "STREAMING") throw new Error(`套餐类型不匹配:${plan.name}${plan.type},不能作为流媒体套餐购买`);
if (!plan.isActive) throw new Error(`套餐已下架${plan.name} 当前不可购买`);
const availability = await getPlanAvailability(plan, { userId: session.user.id });
if (!availability.available) {