Hi 👋
如果客户端发生错误,Nuxt将显示一个通用错误页面。你通常不想全屏显示错误页面,而是在应用中的特定位置显示错误。因此,Nuxt提供了<NuxtErrorBoundary>
组件:
<template>
<NuxtErrorBoundary>
<AnyComponent/>
</NuxtErrorBoundary>
</template>
<NuxtErrorBoundary>
将在其默认插槽中捕获所有错误。
您可以使用#error
插槽向用户显示错误。它提供了一个clearError
函数来清除错误并再次显示子对象:
<script setup lang="ts">
const onError = (error: Error) => {
// Here you can try to resolve the error
}
</script>
<template>
<NuxtErrorBoundary @error="onError">
<AnyComponent/>
<template #error="{ error, clearError }">
An error occurred: {{ error.message }}
<button @click="clearError">
Try again
</button>
</template>
</NuxtErrorBoundary>
</template>
您可以在error = null
中调用onError
来清除错误。但是这将重新渲染默认插槽。如果您还没有完全解决错误,错误槽将再次出现,这可能导致无限循环。
一个解决方案是在onError
中导航到不同的页面:
<script setup lang="ts">
const recoverFromError = async (error) => {
await navigateTo('/');
error.value = null;
}
</script>
如果您导航到另一个页面,错误将自动清除。
这个地址(nuxt.com/docs/examples/advanced/error-handling
)演示了如何在不同环境中处理错误的实例:页面,插件,组件和中间件。
看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~
专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)