当前位置: 首页 > article >正文

Vue中设置报错页面和“Uncaught runtime errors”弹窗关闭

文章目录

    • 前言
    • 操作步骤
      • 大纲
      • 1.使用Vue自带的报错捕获机制添加报错信息
      • 2.在接口报错部分添加相同机制
      • 3.把报错信息添加到Vuex中方便全局使用
      • 4.添加报错页面备用
      • 5.app页面添加if判断替换报错界面
    • 效果
    • 备注:vue项目中Uncaught runtime errors:怎样关闭

前言

在开发Vue项目中,要求遇到报错显示一个报错页面,而不是把报错信息显示。

操作步骤

大纲

  1. 使用Vue自带的报错捕获机制添加报错信息
  2. 在接口报错部分添加相同机制
  3. 把报错信息添加到Vuex中方便全局使用
  4. 添加报错页面备用
  5. app页面添加if判断替换报错界面

1.使用Vue自带的报错捕获机制添加报错信息

main.js

// 设置全局错误处理
app.config.errorHandler = (err) => {
    // 存储错误信息到Vuex中
    store.commit('setError', err.message || '未知错误');
}

2.在接口报错部分添加相同机制

catch (error) {
    console.error('API 请求错误:', error);
    // 更新 Vuex 错误信息
    store.dispatch('setError', error.message || '接口请求失败');
    throw error;
  } 

3.把报错信息添加到Vuex中方便全局使用

import { createStore } from 'vuex'
export default createStore({
  state: {
    error: null, // 添加 error 信息
  },
  mutations: {
    setError(state, payload) {
      state.error = payload;
    }
  },
  actions: {
    setError({ commit }, payload) {
      commit('setError', payload);
    }
  },
  getters: {
    getError: (state) => state.error,
  },
})

4.添加报错页面备用

<!-- ErrorPage.vue -->
<template>
  <div class="error-page">
    <h2>发生错误</h2>
    <p>{{ message }}</p>
    <p>请稍后再试,出现了问题。</p>
  </div>
</template>

<script>
export default {
  name: 'ErrorPage',
  props: {
    message: {
      type: String,
      default: '未知错误'
    }
  }
}
</script>

<style scoped>
.error-page {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100vh;
  text-align: center;
  background-color: #f8d7da;
  color: #721c24;
}

h2 {
  font-size: 2rem;
}

p {
  font-size: 1rem;
  color: #555;
}
</style>

5.app页面添加if判断替换报错界面

<ErrorPage v-if="errorMessage" :message="errorMessage" />
<!-- 其他页面内容 -->
<div v-else class="common-layout">
	……
</div>

效果

在这里插入图片描述

备注:vue项目中Uncaught runtime errors:怎样关闭

使用vue-cli新建的vue项目,当出现编译错误或警告时,在浏览器中显示全屏覆盖,如下图,此报错在生产环境下并不会出现。

通过看控制台,找到关键词webpack
在这里插入图片描述
可以明显的看出来是webpack-dev-server弄出来的。

解决办法
在vue.config.js中添加如下配置

module.exports = defineConfig({
	...
	devServer: {
    client: {
      overlay: false
    }
  }
})

备注部分此处参考:https://blog.csdn.net/qq_36877078/article/details/131175355

鸣谢。


http://www.kler.cn/a/518281.html

相关文章:

  • 2025_1_26 c++中关于构造和析构的顺序
  • 免费SSL证书申请,springboot 部署证书
  • 蓝桥杯算法赛第25场月赛
  • 【Rust自学】15.3. Deref trait Pt.2:隐式解引用转化与可变性
  • electron打包客户端在rk3588上支持h265硬解
  • 【后端开发】字节跳动青训营之性能分析工具pprof
  • 高级java每日一道面试题-2025年01月24日-框架篇[SpringMVC篇]-SpringMVC常用的注解有哪些?
  • cursor远程调试Ubuntu以及打开Ubuntu里面的项目
  • ray.rllib 入门实践-4: 构建算法
  • debian12使用kvm安装windows系统
  • solidity基础 -- 事件
  • 如何用数据编织、数据虚拟化与SQL-on-Hadoop打造实时、可扩展兼容的数据仓库?
  • 【python】四帧差法实现运动目标检测
  • 如何做一个C#仿Halcon Calibration插件
  • 大模型学习计划
  • python判断字符串是否存在空白、字母或数字
  • 单链表算法实战:解锁数据结构核心谜题——移除链表元素
  • 计算机网络 (54)系统安全:防火墙与入侵检测
  • 论文速读|Matrix-SSL:Matrix Information Theory for Self-Supervised Learning.ICML24
  • 机器学习11-学习路径推荐
  • Solon Cloud Gateway 开发:导引
  • 99.15 金融难点通俗解释:毛利率vs营业利润率vs净利率
  • AI画笔,绘就古今艺术星河(5/10)
  • 【Docker】私有Docker仓库的搭建
  • K8S中Service详解(三)
  • 食堂订餐小程序ssm+论文源码调试讲解