Files
Henry_Du 4ce4649aaf
Build VoiceHub FPK / build-fpk (push) Failing after 56m5s
Build and Push Docker Image / build-and-push (push) Canceled after 1h9m35s
初次提交
2026-09-06 08:19:02 +08:00

63 lines
1.7 KiB
TypeScript

import type { NitroErrorHandler } from 'nitropack'
const errorHandler: NitroErrorHandler = async (error, event) => {
// 记录错误详情
console.error('Nitro Error Handler:', {
url: event.node.req.url,
method: event.node.req.method,
error: error.message,
stack: error.stack,
timestamp: new Date().toISOString()
})
// 检查是否是数据库连接错误
const isDatabaseError =
error.message.includes('ECONNRESET') ||
error.message.includes('ENOTFOUND') ||
error.message.includes('ETIMEDOUT') ||
error.message.includes('Connection terminated') ||
error.message.includes('Connection lost') ||
error.message.includes('Prisma')
if (isDatabaseError) {
console.log('Database error detected in error handler')
// 返回数据库错误响应
return {
statusCode: 503,
statusMessage: 'Service Temporarily Unavailable',
data: {
error: 'Database connection issue',
message: '数据库连接暂时不可用,请稍后重试',
timestamp: new Date().toISOString(),
retryAfter: 30 // 建议30秒后重试
}
}
}
// 根据错误类型返回不同的响应
if (error.statusCode) {
return {
statusCode: error.statusCode,
statusMessage: error.statusMessage || 'Error',
data: {
error: error.message,
timestamp: new Date().toISOString()
}
}
}
// 默认服务器错误
return {
statusCode: 500,
statusMessage: 'Internal Server Error',
data: {
error: '服务器内部错误',
message: '服务暂时不可用,请稍后重试',
timestamp: new Date().toISOString()
}
}
}
export default errorHandler