Iwen's blog Iwen's blog
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
复盘
关于

Iwen

不摸鱼的哥哥
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
复盘
关于
  • JavaScript文章

  • Vue文章

  • 学习笔记

  • Vue-iView疑难杂症

  • 微前端

  • 原创经验

    • 微服务集群下的前端接口层优化适配
    • 实现右键菜单
    • sassdoc了解及实践
    • vue-router报错Uncaught (in promise)及解决方法
      • 报错原因
      • 解决方法
    • nodemailer实现构建打包自动推送邮箱
    • tinypng实现本地自动压缩
  • 前端
  • 原创经验
Mr.w
2021-01-11

vue-router报错Uncaught (in promise)及解决方法

# vue-router报错Uncaught (in promise)及解决方法

# 报错原因

在升级了Vue-Router版本到到3.1.0及以上之后,页面在跳转路由控制台会报Uncaught (in promise)的问题。

vuerouter_err

这是什么原因呢?

看vue-router的版本更新日志

V3.1.0版本里面新增功能:push和replace方法会返回一个promise, 你可能在控制台看到未捕获的异常。

# 解决方法

方法一:在调用方法的时候用catch捕获异常

this.$router.replace('/home').catch(err => {
   console.log(err)
})
1
2
3

方法二:对Router原型链上的push、replace方法进行重写,这样就不用每次调用方法都要加上catch

在router.js加入以下内容:

import Router from 'vue-router'
  
const originalPush = Router.prototype.push
Router.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => err)
}
1
2
3
4
5
6
7
sassdoc了解及实践
nodemailer实现构建打包自动推送邮箱

← sassdoc了解及实践 nodemailer实现构建打包自动推送邮箱→

最近更新
01
flex布局页面自适应滚动条问题
12-28
02
前后端分离开发请求接口跨域如何携带cookie的问题
12-28
03
怎么实现div长宽比固定width-height4比3
12-28
更多文章>
Theme by Vdoing | Copyright © 2017-2022 Iwen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式