diff --git a/app/api/rmbg/route.ts b/app/api/rmbg/route.ts index a187dd03a..b8d70a5c5 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 } );