你可以使用此函数创建一个带有额外元数据的错误对象。它可在应用的 Vue 和 Nitro 部分使用,通常用于抛出错误。
err: string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }你可以向 createError 传入字符串或对象。如果传入字符串,则该字符串将作为错误的 message,并且 statusCode 默认为 500。如果传入对象,则可以设置错误的多个属性,例如 statusCode、message 以及其他错误属性。
如果你抛出由 createError 创建的错误:
clearError 清除它。fatal: true 来实现。<script setup lang="ts">
const route = useRoute()
const { data } = await useFetch(`/api/movies/${route.params.slug}`)
if (!data.value) {
throw createError({ statusCode: 404, statusMessage: 'Page Not Found' })
}
</script>
在服务器 API 路由中使用 createError 来触发错误处理。
export default eventHandler(() => {
throw createError({
statusCode: 404,
statusMessage: 'Page Not Found',
})
})
在 API 路由中,建议通过传入带有简短 statusMessage 的对象来使用 createError,因为该字段可以在客户端访问。否则,在 API 路由中传递给 createError 的 message 不会传播到客户端。或者,你可以使用 data 属性将数据传回客户端。无论哪种情况,请始终考虑避免将动态用户输入放入 message 中,以防潜在的安全问题。