From d38ee5d98b5706011ed2e43f53df97ebd4062df8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 29 Dec 2025 00:13:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B9=E8=BF=9B=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=A3=80=E6=B5=8B=20-=20=E6=A3=80=E6=9F=A5er?= =?UTF-8?q?ror.cause=E4=B8=AD=E7=9A=84EHOSTUNREACH=E7=AD=89=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/rmbg/route.ts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/app/api/rmbg/route.ts b/app/api/rmbg/route.ts index a187dd0..b8d70a5 100644 --- a/app/api/rmbg/route.ts +++ b/app/api/rmbg/route.ts @@ -212,6 +212,7 @@ export async function POST(request: NextRequest) { // 检查是否是网络连接错误 if (fetchError instanceof Error) { + // 检查超时错误 if (fetchError.name === 'AbortError') { return NextResponse.json( { @@ -222,14 +223,28 @@ export async function POST(request: NextRequest) { ); } - if (fetchError.message.includes('EHOSTUNREACH') || - fetchError.message.includes('ENOTFOUND') || - fetchError.message.includes('ECONNREFUSED') || - fetchError.message.includes('No route to host')) { + // 检查错误消息和cause中的网络错误 + const errorMessage = fetchError.message || ''; + const errorCause = (fetchError as any).cause; + const causeMessage = errorCause?.message || ''; + const causeCode = errorCause?.code || ''; + + // 检查各种网络连接错误 + if (errorMessage.includes('EHOSTUNREACH') || + errorMessage.includes('ENOTFOUND') || + errorMessage.includes('ECONNREFUSED') || + errorMessage.includes('No route to host') || + causeMessage.includes('EHOSTUNREACH') || + causeMessage.includes('ENOTFOUND') || + causeMessage.includes('ECONNREFUSED') || + causeMessage.includes('No route to host') || + causeCode === 'EHOSTUNREACH' || + causeCode === 'ENOTFOUND' || + causeCode === 'ECONNREFUSED') { return NextResponse.json( { error: "无法连接到抠图API服务器", - detail: `服务器无法访问 ${apiUrl},请检查:\n1. API服务器是否在线\n2. 网络连接是否正常\n3. 防火墙设置是否正确`, + detail: `服务器无法访问 ${apiUrl},请检查:\n1. API服务器是否在线\n2. 网络连接是否正常\n3. 防火墙设置是否正确\n4. 端口8000是否已开放`, }, { status: 503 } );