Nuxt.js - 最新自定义报错、缺省、404、500 定制化 error.vue(页面、接口报错时自动跳转到该自定义页面)支持自定义文案、状态码等功能

前言

在开发 Nuxt.js 时,当页面出错或接口后台数据返回异常时,页面就会 “直接呈现” 报错的信息。

正常情况下,当页面 404、500 或页面报错时,

前端应该 自动跳转到错误页,而不是直接白屏或显示报错信息。


本文将从 0-1 带您完成一个 error.vue 错误页,承载各种各样的 “错误类型”,

支持接口报错自动触发与自定义手动触发,给用户一个较为良好的体验:

在这里插入图片描述

第一步

如果您已经创建过该文件夹(使用过布局模板),可略过创建文件夹这一步。

打开项目根目录,创建 layouts 文件夹(注意不要拼错,否则无效),

在里面再建立一个 error.vue 文件,复制以下代码:

<!--
    跟普通页面一样,自定义想要的错误页面即可
    主要是依靠props中的error对象数据进行判断与自定义
    下面就是给您个示例,照猫画虎即可。
-->

<template>
    <div class="error-box">
        <!-- 404 -->
        <section v-if="error.statusCode == 404">
            <img src="https://img-blog.csdnimg.cn/20210715111039922.png" />
            <h1>{
   
   { error }}</h1>
        </section>
        <!-- END -->

        <!-- 500 -->
        <section v-if="error.statusCode == 500">
            <h1>{
   
   { error }}</h1>
        </section>
        <!-- END -->
        
        <!-- 常用功能 -->
        <div style="height: 30px" />
        <button @click="$router.go(-1)">
            返回上一页
        </button>
        <button @click="$router.go('/')">
            返回首页
        </button>
        <!-- END -->
    </div>
</template>

<script>
export default {
      
      
    props: ['error']
    // ...
}
</script>

<style scoped>
/* 您自定义样式即可 */
.error-box {
      
      
    width: 1080px;
    margin: 0 auto;
    text-align: center;
    padding-top: 200px;
}
</style>

第二步

做好了自定义页面,就差 “触发它” 了。

您随便找个页面,复制以下代码运行起来。

<!-- 
  在 asyncData 中使用 app.context.error 进行调用
  在外部,使用 this.$nuxt.error() 调用
 -->

<template>
  <div>
    <h1>刷新后,模拟 404 错误</h1>
    <button @click="toError()">点击发生系统错误</button>
  </div>
</template>

<script>
export default {
      
      
  asyncData({
       
        app }) {
      
      
    // console.log(app.context)
    // 模拟出错(由于运行直接执行,暂时先注释掉了)
    
    // app.context.error({
      
      
    //   statusCode: 404,
    //   message: '404了,这是自定义文案'
    // })
  },

  methods: {
      
      
    toError() {
      
      
      // 可在任意代码段内使用
      this.$nuxt.error({
      
      
        statusCode: 500,
        message: '点击按钮后,系统发生错误~'
      })
    },
  }
}
</script>

常见问题

  • Nuxt.js 默认自带错误处理页面,如果不需要样式美化则直接略过 第一步 操作即可,无需 error.vue,框架默认的页面同样支持传入自定义状态码与文案,如下图所示:在这里插入图片描述
  • 注意 layoutserror.vue 名称不能拼错(不支持自定义),否则直接无效。
  • 当传入 statusCode 状态码时,别小看它,不仅仅用以区分,它还会改变该网站的状态,如下图所示:在这里插入图片描述

SEO

Nuxt.js 最新自定义报错、缺省、404、500 定制化 error.vue(页面、接口报错时自动跳转到该自定义页面)支持自定义文案、状态码等功能,NUXT报错后怎么跳转到自己定义的错误页面去,页面直接报错了怎么办能不能跳转到指定的404页面,Nuxt出现Server error的解决方案!定制 error.vue 错误缺省页,写项目时增加错误提示页面操作,Nuxt.js自定义错误页,错误提示页写项目时增加错误提示页面操作,自定义错误页,nuxtjs 自定义服务端错误页面Server error page。

猜你喜欢

转载自blog.csdn.net/weixin_44198965/article/details/127125100