From 990528da3702c3bb47f3aeb0bb2134719f43e025 Mon Sep 17 00:00:00 2001 From: dreamhunter2333 Date: Sat, 27 Dec 2025 11:29:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20API=20=E5=93=8D?= =?UTF-8?q?=E5=BA=94=20body=20stream=20=E9=87=8D=E5=A4=8D=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- frontend/src/api/client.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 5243ef9..ecf0c71 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -48,11 +48,16 @@ async function responseInterceptor(response: Response): Promise { if (!response.ok) { let errorMessage: string + // 先读取为文本,避免 body stream already read 错误 + const responseText = await response.text() + try { - const errorData = await response.json() + // 尝试解析为 JSON + const errorData = JSON.parse(responseText) errorMessage = errorData.message || errorData.error || JSON.stringify(errorData) } catch { - errorMessage = await response.text() || `请求失败: ${response.status}` + // 不是 JSON,直接使用文本 + errorMessage = responseText || `请求失败: ${response.status}` } const error = new ApiError(errorMessage, response.status)