You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NuxtJS 3中实现自定义错误页面?

Nuxt 3 自定义错误页配置说明

Nuxt 3 的自定义错误页配置相比 Nuxt 2 有较大调整,原layouts/error.vue的方案已经失效,正确配置方式如下:

全局错误页配置(适配全场景错误,包括404、服务端渲染错误)

直接在项目根目录(和app.vue、nuxt.config.ts同级)新建error.vue文件即可,该文件会自动作为全局兜底错误页生效。
基础示例代码:

<script setup>
// 获取错误实例
const error = useError()
// 清除错误的方法,可配置跳转路径
const handleClearError = () => {
  clearError({ redirect: '/' })
}
</script>

<template>
  <div class="error-page">
    <h2>访问出错了</h2>
    <p v-if="error.statusCode === 404">您访问的页面不存在</p>
    <p v-else>服务器错误:{{ error.message }}</p>
    <button @click="handleClearError">返回首页</button>
  </div>
</template>

单布局自定义错误页配置

如果需要给不同布局配置独立的错误页,可以在对应布局文件中用<NuxtErrorBoundary>组件包裹<NuxtPage />,通过插槽自定义错误展示内容:

<template>
  <div class="default-layout">
    <!-- 公共头部 -->
    <Header />
    <NuxtErrorBoundary>
      <!-- 正常渲染的页面内容 -->
      <template #default>
        <NuxtPage />
      </template>
      <!-- 错误时渲染的内容 -->
      <template #error="{ error, clearError }">
        <div class="layout-error">
          <p>当前页面加载失败:{{ error.message }}</p>
          <button @click="clearError">重新加载</button>
        </div>
      </template>
    </NuxtErrorBoundary>
    <!-- 公共底部 -->
    <Footer />
  </div>
</template>

注意事项

  • 根目录的error.vue优先级低于布局内的<NuxtErrorBoundary>,未被局部捕获的错误才会走全局错误页逻辑
  • 不需要在nuxt.config.ts中额外注册错误页,根目录的error.vue会被自动识别
  • 测试404效果时,需确保没有自定义路由规则覆盖默认的404匹配逻辑

内容的提问来源于stack exchange,提问作者sporadic-urchin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:36:04