/** tRPC 错误 → 用户可读文案:提取 zod 数组消息、兜底 HTML/网络异常。 */
export function formatTrpcError(err: unknown, fallback: string): string {
const raw = err instanceof Error ? err.message : typeof err === "string" ? err : "";
if (!raw) return fallback;
if (raw.startsWith("<") || raw.includes("
e && typeof e === "object" ? (e as { message?: unknown }).message : null,
)
.filter((m): m is string => typeof m === "string" && m.length > 0);
if (msgs.length > 0) return msgs.join(";");
}
if (parsed && typeof parsed === "object" && "message" in parsed) {
const m = (parsed as { message?: unknown }).message;
if (typeof m === "string" && m) return m;
}
} catch {
/* 非 JSON,按原文处理 */
}
return raw;
}