Почему функция createError не показывает все параметры? Согласно документации , доступные параметры ошибочны: { cause, data, message, name, stack, statusCode, statusMessage, fatal }
Я попробовал это в своем API, но это не работает. Я не вижу параметр cause в качестве ответа. Я вижу только statusCode, statusMessage, message и stack. У кого-нибудь есть такая же проблема? Я открыт для предложений.
Вот мои примеры кодов.
export default defineEventHandler(async (event) => {
try {
const body: IFormEntries = await readBody(event)
if (!body) {
return createError({ statusCode: 500, statusMessage: 'Something went wrong.', cause: 'Not Working' })
}
return 200
} catch (error) {
return createError({ statusCode: 500, statusMessage: 'Something went wrong.' })
}
})
Все, что я хочу, это показать причину ошибки.





Вы можете создать свой собственный ответ на ошибку.
Если вы хотите, чтобы реакция на ошибку была гибкой, и у вас был полный контроль над параметрами. Это обходной путь, который для меня эффективен.
У вас может быть любой параметр, который вы хотите, если вы включите statusCode и statusMessage в ответ.
~/types/index.ts
export interface IResponse {
statusCode: number
statusMessage: string
cause?: any
}~/server/utils/error-response.ts
import { H3Event } from 'h3'
import { IResponse } from '~/types'
const errorResponse = (event: H3Event, response: IResponse): IResponse => {
event.node.res.statusCode = response.statusCode
event.node.res.statusMessage = response.statusMessage
return {
statusCode: response.statusCode,
statusMessage: response.statusMessage,
cause: response.cause ? response.cause : null
}
}
export default errorResponseИспользование. Это внутри ваших API. Нет необходимости импортировать файл в папку utils, так как он будет импортирован автоматически.
export default defineEventHandler(async (event) => {
try {
const body: IFormEntries = await readBody(event)
if (!body) {
return errorResponse(event, { statusCode: 400, statusMessage: 'Custom Message', cause: 'Body is required' })
}
return 200
} catch (error) {
return errorResponse(event, { statusCode: 500, statusMessage: 'Something went wrong.' })
}
})Результат
Надеюсь, это поможет вам.