createError()

Creates a Nuxt/H3 error object you can throw to trigger error handling.

Since Nuxt 3.0 Spec ↗

Syntax

throw createError(input)

Parameters

NameTypeRequiredDescription
input string | { statusCode, statusMessage, message, data, fatal } Yes A message string or an object with `statusCode`, `statusMessage`, `message`, `data`, and `fatal`.

Returns

NuxtError — An error object suitable for throwing.

Examples

<script setup lang="ts">
const { data } = await useFetch('/api/post')
if (!data.value) {
  throw createError({
    statusCode: 404,
    statusMessage: 'Post not found',
    fatal: true,
  })
}
</script>
// server/api/user.ts
export default defineEventHandler((event) => {
  if (!isAuthed(event)) {
    throw createError({ statusCode: 401, statusMessage: 'Unauthorized' })
  }
})

Notes

In pages/components, set `fatal: true` to render the full-screen `error.vue` page; otherwise the error is non-fatal and handled by a nearby `<NuxtErrorBoundary>`. In server routes the `statusCode` sets the HTTP response status. `data` is serialized to the client.

See also