透過 100 多個技巧的集合來學習 Nuxt!

createError

建立一個帶有額外元數據的錯誤物件。

您可以使用此函式來建立帶有額外元數據的錯誤物件。它可以在您的應用程式的 Vue 和 Nitro 部分中使用,並且旨在拋出。

參數

  • err: string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }

您可以將字串或物件傳遞給 createError 函式。如果您傳遞字串,它將用作錯誤的 message,並且 statusCode 將預設為 500。如果您傳遞物件,您可以設定錯誤的多個屬性,例如 statusCodemessage 和其他錯誤屬性。

在 Vue 應用程式中

如果您拋出使用 createError 建立的錯誤

  • 在伺服器端,它會觸發全螢幕錯誤頁面,您可以使用 clearError 清除。
  • 在客戶端,它會拋出一個非致命錯誤,供您處理。如果您需要觸發全螢幕錯誤頁面,則可以透過設定 fatal: true 來完成。

範例

pages/movies/[slug].vue
<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 在伺服器 API 路由中觸發錯誤處理。

範例

server/api/error.ts
export default eventHandler(() => {
  throw createError({
    statusCode: 404,
    statusMessage: 'Page Not Found'
  })
})

在 API 路由中,建議使用 createError 並傳遞帶有簡短 statusMessage 的物件,因為它可以在客戶端存取。否則,傳遞給 API 路由上的 createErrormessage 不會傳播到客戶端。或者,您可以使用 data 屬性將資料傳回給客戶端。無論如何,始終考慮避免將動態使用者輸入放入訊息中,以避免潛在的安全性問題。

文件 > 入門 > 錯誤處理 中閱讀更多資訊。