Nuxt.js 中定制 error.vue 错误缺省页

本文介绍了如何在Nuxt.js项目中创建和自定义错误页面`error.vue`,用于处理404、500等应用错误。当接口报错或数据异常时,会自动跳转到此页面,并通过props传递错误信息。同时,展示了如何在不同场景下触发错误页面,以及在asyncData中调用`context.error()`来手动触发错误处理。
摘要由CSDN通过智能技术生成

一、介绍

在Nuxt.js项目中,当接口报错或后台数据返回异常时,前端展示就会呈现接口报错的信息,这会给用户非常不好的体验。所以当出现404、500等应用错误时,我们可以在项目的根目录下创建layouts文件夹,然后在该文件夹下创建error.vue文件,创建后该文件就是Nuxt.js默认的错误缺省页,当出现404、500等应用错误时就会自动跳转到该error.vue页面,或者根据接口结果进行手动跳转。同时我们可以通过修改该文件的布局和样式,以及接收出错页传递进来的报错信息,来定制化项目错误页面。
但要注意的是该文件虽然是在layouts文件夹下,但这并不是一个布局文件或组件,而是一个完整的页面(page)。

二、基本使用

1、创建layouts文件夹,并创建error.vue错误缺省页

在这里插入图片描述

2、定制化error.vue页,根据报错页面传递的错误信息进行相应处理
<template>
  <div>
  <!-- 定制化的页面展示 -->
    {{ error.message ? error.message : '抱歉,当前页面好像起飞了,可尝试进行刷新或返回首页' }}
  </div>
</template>

<script>
export default {
  name: 'TestError',
  props: {
   // 接受错误页面传递的错误信息
    error: {
      type: Object,
      required: true
    }
  },
  mounted () {
    console.log(this.error)
  },
}
</script>
3、在出现404、500等应用错误时,会自动跳转error.vue,并传递错误信息
报错页面:
<template>
  <div>
  <!-- 调用一个存在点击事件  -->
  	<div @click="click()">
      这是个错误按钮1
    </div>
  	<!-- 调用一个并不存在的方法,会自动跳转 error.vue  -->
    <div @click="click2()">
      这是个错误按钮2
    </div>
    <!-- 跳转一个并不存在的路由地址,会404 ,自动跳转 error.vue -->
    <nuxt-link to="/eee/error">
      这是个错误的路由地址
    </nuxt-link>
  </div>
</template>
<script>
export default {
  name: 'IndexPage',
  created () {
   // 当接口报错500时,会自动跳转error.vue
    const res = await this.$axios.get(api.lesson.info, {
        params: {
          lessonId: courseId
        }
      })
  },
  methods: {
     click () {
     // 在点击事件中调用一个不存在的方法  也会自动跳转error.vue
      console.log(this.getList())
    }
  }
}
</script>
4、根据某些状态,如后端接口的返回值,自主决定是否进入error.vue
报错页面:
this.$axios.get(api.getCourseInfo.url + '?lessonId=' + Number(this.$route.params.id)).then((res) => {
        ...
        // 接口本身没有报错 http状态码为 200
        // 根据接口返回值的 code状态 决定是否进入错误页
        if (res.code === 201) {
          // 通过调用 this.$nuxt.error() 进入错误页 
          // 可以通过参数传递错误信息
          this.$nuxt.error(res.result))
        } else {
		  ...
		}
      })
error.vue
<template>
  <div>
  <!-- 展示传递过来的错误信息 -->
    {{ error.message ? error.message : '抱歉,当前页面好像起飞了,可尝试进行刷新或返回首页' }}
  </div>
</template>

<script>
export default {
  name: 'TestError',
  props: {
   // 通过props接受错误页面传递的错误信息
    error: {
      type: Object,
      required: true
    }
  }
}
</script>
5、在asyncData中可通过content.error()跳转到错误页面
asyncData(context) {
 try {
  let paramsWorksList = {
  	id: context.params.id
  }
  let WorksDetail = await context.$axios.post(`/anchor/worksList`, paramsWorksList)
 } catch (error) {
  // 修改成这样就可以跳到错误提示页面 并传递错误信息
  context.error({ statusCode: 404, message: '页面起飞了' }) 
 }
},

error.vue页面中,依旧是通过props中的error对象来获取,传递过去的错误信息,与this.$nuxt.error()一致。

三、理解尚浅,后续补充

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以在 nuxt.config.js 配置 error 属性来设置服务端错误面。例如: ``` module.exports = { // ... error: { statusCode: 500, message: '服务器出错了,请稍后再试!' } } ``` 其,statusCode 表示 HTTP 状态码,message 表示错误信息。你可以根据自己的需求来设置。 ### 回答2: 要配置 Nuxt.js 的服务端错误面,需要按照以下步骤进行操作: 1. 首先,打开 Nuxt.js 项目的 `nuxt.config.js` 文件。 2. 在该文件,找到 `router` 配置项,并修改它。例如,将其改为如下代码: ``` router: { middleware: ['error'] } ``` 这样可以指定一个间件(在此例为名为 "error" 的间件)来处理错误面。 3. 在项目根目录下创建一个新的文件夹,并命名为 `middleware`。进入该文件夹,并新建一个名为 `error.js` 的文件。 4. 在 `error.js` 文件,可以定义自定义的错误处理逻辑。以下是一个简单的例子: ```javascript export default function (context) { const { res, error } = context res.statusCode = error.statusCode || 500 res.end('服务器错误') } ``` 上述代码,我们根据错误的状态码(`statusCode`)来设置响应的状态码,并通过 `res.end()` 方法返回自定义的错误信息。 5. 最后,在 `nuxt.config.js` 文件,可以使用 `modules` 配置项来添加一些 Nuxt.js 的扩展模块,以实现更高级的错误定制。例如,安装并添加 `@nuxtjs/axios` 模块,可以在项目使用更丰富的错误定制功能。 总之,通过按照上述步骤配置 Nuxt.js 的服务端错误面,可以根据自己的需求定制并展示合适的错误信息。 ### 回答3: 在Nuxt.js配置服务端的错误面可以通过自定义错误面、间件以及服务器选项来实现。 1. 自定义错误面: 首先,可以在Nuxt.js项目的根目录下创建一个`layouts`文件夹,并在该文件夹下创建一个`error.vue`文件。这个文件将作为错误面的模板。在`error.vue`可以自定义错误面的样式和内容,例如可以显示错误的类型和具体的错误信息。 2. 间件: Nuxt.js提供了间件机制,通过使用间件可以在服务端对错误进行处理和控制。可以在项目的根目录下创建一个`middleware`文件夹,并在该文件夹下创建一个`error.js`文件。在`error.js`可以编写错误处理的逻辑,例如可以根据错误的状态码来进行特定的处理。 3. 服务器选项: Nuxt.js的`nuxt.config.js`文件可以配置服务器的选项。可以在该文件添加`server`选项来配置服务端的错误面。例如可以设置`error`属性来指定自定义的错误面的路径。 示例: ```js // nuxt.config.js module.exports = { server: { error: '~/layouts/error.vue' } } ``` 通过以上的配置,当服务端报错时,Nuxt.js会使用自定义的错误面进行展示。 总结:Nuxt.js配置服务端错误面,可以通过自定义错误面、间件以及服务器选项来实现。这样可以将错误信息展示给用户,并且可以根据需要进行特定的错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小朱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值