Error
Bearbeiten
Die Error-Komponente rendert ein <main>-Element, das zusammen mit der Header-Komponente ein Layout in voller Höhe erstellt, das sich auf die verfügbare Höhe des Ansichtsfensters erstreckt.
--ui-header-height, um sich korrekt unter dem Header zu positionieren.Fehler
Verwenden Sie die error-Prop, um eine Fehlermeldung anzuzeigen.
404
Page not found
The page you are looking for does not exist.
<template>
<UError
:error="{
statusCode: 404,
statusMessage: 'Page not found',
message: 'The page you are looking for does not exist.'
}"
/>
</template>Icon: badge{label="4.8+" class="align-text-top"} (englisch)
Verwenden Sie die icon-Prop, um ein Symbol über dem Statuscode anzuzeigen.
404
Page not found
The page you are looking for does not exist.
<template>
<UError
icon="i-lucide-file-x"
:error="{
statusCode: 404,
statusMessage: 'Page not found',
message: 'The page you are looking for does not exist.'
}"
/>
</template>Verwenden Sie den #leading-Steckplatz, um ein benutzerdefiniertes Element, z. B. ein Logo, anzuzeigen.

404
Page not found
The page you are looking for does not exist.
<template>
<UError
:error="{
statusCode: 404,
statusMessage: 'Page not found',
message: 'The page you are looking for does not exist.'
}"
>
<template #leading>
<img src="https://github.com/nuxt.png" alt="Logo" class="size-10 rounded-full" />
</template>
</UError>
</template>Clear ist ein
Verwenden Sie die clear-Prop, um die Schaltfläche zum Löschen (mit dem Wert false) anzupassen oder auszublenden.
Sie können jede Eigenschaft der Komponente Button übergeben, um sie anzupassen.
404
Page not found
The page you are looking for does not exist.
<template>
<UError
:clear="{
color: 'neutral',
size: 'xl',
icon: 'i-lucide-arrow-left',
class: 'rounded-full'
}"
:error="{
statusCode: 404,
statusMessage: 'Page not found',
message: 'The page you are looking for does not exist.'
}"
/>
</template>Weiterleitung
Verwenden Sie die redirect-Prop, um den Benutzer auf eine andere Seite umzuleiten, wenn auf die Schaltfläche zum Löschen geklickt wird. Standardmäßig /.
404
Page not found
The page you are looking for does not exist.
<template>
<UError
redirect="/docs/getting-started"
:error="{
statusCode: 404,
statusMessage: 'Page not found',
message: 'The page you are looking for does not exist.'
}"
/>
</template>Examples Bearbeiten
Innerhalb error.vue
Verwenden Sie die Komponente Error in Ihrem error.vue:
<script setup lang="ts">
import type { NuxtError } from '#app'
const props = defineProps<{
error: NuxtError
}>()
</script>
<template>
<UApp>
<UHeader />
<UError :error="error" />
<UFooter />
</UApp>
</template>
app.vue in Ihrer error.vue-Datei replizieren, um das gleiche Layout und die gleichen Funktionen zu haben, hier ist ein Beispiel: https://github.com/nuxt/ui/blob/v4/docs/app/error.vuenuxt generate verwenden, wird empfohlen, fatal: true in Ihren createError-Aufruf einzufügen, um sicherzustellen, dass die Fehlerseite angezeigt wird:<script setup lang="ts">
const route = useRoute()
const { data: page } = await useAsyncData(route.path, () => {
return queryCollection('docs').path(route.path).first()
})
if (!page.value) {
throw createError({ statusCode: 404, statusMessage: 'Page not found', fatal: true })
}
</script>
API
Props Bearbeiten
| Prop | Default | Type |
|---|---|---|
as | 'main' | anyThe element or component this component should render as. |
icon | anyThe icon displayed above the status code. | |
error | Partial<NuxtError<unknown> & { message: string; }> | |
redirect | '/' | stringThe URL to redirect to when the error is cleared. |
clear | true | boolean | ButtonProps Display a button to clear the error in the links slot.
|
ui | { root?: SlotClass; leading?: SlotClass; leadingIcon?: SlotClass; statusCode?: SlotClass; statusMessage?: SlotClass; message?: SlotClass; links?: SlotClass; } |
Slots Bearbeiten
| Slot | Type |
|---|---|
default | {} |
leading | { ui: object; } |
statusCode | {} |
statusMessage | {} |
message | {} |
links | {} |
Theme Bearbeiten
export default defineAppConfig({
ui: {
error: {
slots: {
root: 'min-h-[calc(100vh-var(--ui-header-height))] flex flex-col items-center justify-center text-center',
leading: 'mb-4 flex items-center justify-center',
leadingIcon: 'size-10 shrink-0 text-primary',
statusCode: 'text-base font-semibold text-primary',
statusMessage: 'mt-2 text-4xl sm:text-5xl font-bold text-highlighted text-balance',
message: 'mt-4 text-lg text-muted text-balance',
links: 'mt-8 flex items-center justify-center gap-6'
}
}
}
})import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
error: {
slots: {
root: 'min-h-[calc(100vh-var(--ui-header-height))] flex flex-col items-center justify-center text-center',
leading: 'mb-4 flex items-center justify-center',
leadingIcon: 'size-10 shrink-0 text-primary',
statusCode: 'text-base font-semibold text-primary',
statusMessage: 'mt-2 text-4xl sm:text-5xl font-bold text-highlighted text-balance',
message: 'mt-4 text-lg text-muted text-balance',
links: 'mt-8 flex items-center justify-center gap-6'
}
}
}
})
]
})