createError
Эту функцию можно использовать для создания объекта ошибки с дополнительными мета-данными. Она может использоваться как во Vue, так и в Nitro частях вашего приложения и предназначена для генерации исключений.
Параметры
err:string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }
В функцию createError можно передать либо строку, либо объект. Если вы передадите строку, она будет использована в качестве сообщения об ошибке message, а код состояния statusCode по умолчанию будет равен 500. Если вы передадите объект, вы сможете задать несколько свойств ошибки, таких как statusCode, message и другие свойства ошибки.
В приложении Vue
Если вы генерируете исключение, созданное с помощью 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: 'Страница не найдена' })
}
</script>
В API-маршрутах
Используйте createError для активации обработки ошибок в API-маршрутах на сервере.
Пример
export default eventHandler(() => {
throw createError({
statusCode: 404,
statusMessage: 'Страница не найдена'
})
})
В API-маршрутах рекомендуется использовать createError, передавая объект с коротким statusMessage, потому что он может быть получен на клиенте. В противном случае сообщение message, переданное в createError в API-маршруте, не будет распространяться на клиенте. Альтернативно, вы можете использовать свойство data, чтобы передать данные на клиент. В любом случае, всегда старайтесь избегать размещения динамического ввода пользователя в сообщении, чтобы избежать потенциальных проблем безопасности.