fix: 改进网络错误检测 - 检查error.cause中的EHOSTUNREACH等错误码
This commit is contained in:
parent
30a0c09cf3
commit
d38ee5d98b
@ -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 }
|
||||
);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user