1、场景描述

最近在工作的nuxt项目中,使用vue-router替代nuxt的默认路由,这样使路由关系更明显,也更好调整,再就是可以使用vue-router的编程式导航,进行路由跳转。然后,问题就出现了,在使用this.$router.push()this.$router.replace 进行路由跳转时,有时候会报 Uncaught (in promise)Error: Navigation cancelled from "/" to "/1" with a new navigation这种错误,但是使用声明式导航<router-link>的时候却不会报错,令人头秃。

2、定位问题

经过在网上查询前辈们发布的资料,最终得出结论:该错误是因为vue-router的内部没有对编程式导航进行catch处理,所以在使用this.$router.push()this.$router.replace 进行路由跳转时,往同一地址跳转时或者在跳转的 mounted/activated 等函数中再次向其他地址跳转时会出现报错。但是在3.1.0版本及更高版本中,页面在跳转路由控制台会报Uncaught (in promise)的问题,push和replace方法会返回一个promise, 你可能在控制台看到未捕获的异常。
声明式导航之所以不会出现这种问题,是因为vue-router在内部已经做了相关处理。

3、解决方案

在路由的配置文件中:如 router.js 或 router/index.js ,增加如下配置:

// 基本配置
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)// 解决报错
const originalPush = Router.prototype.push
const originalReplace = Router.prototype.replace
// 针对 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)
}
// 针对 replace 方法
Router.prototype.replace = function push (location, onResolve, onReject) {if (onResolve || onReject) return originalReplace.call(this, location, onResolve, onReject)return originalReplace.call(this, location).catch(err => err)
}

Vue-Router报错:Uncaught (in promise)Error: Navigation cancelled from “/“ to “/1“ with a new navigation相关推荐

  1. Vue前端报错Uncaught (in promise) Error: Navigation cancelled from “/...“ to “/...“ with a new navigation

    需要在index.js文件中添加: const originalPush = VueRouter.prototype.push; VueRouter.prototype.push = function ...

  2. Vue. 之 报错 Uncaught (in promise)

    Vue. 之 报错 Uncaught (in promise) 在点击同一个URL的时候,会报错如下: 解决方案: 在项目目录下运行 npm i vue-router@3.0 -S 即可. 转载于:h ...

  3. vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法

    vue报错 Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解 ...

  4. vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法

    报错 方法一.更换版本 npm i vue-router@3.0 -S 方法二 修改入口文件 //main.js import Router from 'vue-router'const origin ...

  5. 【Vue-Bug记录】Vue 删除取消报错Uncaught (in promise) cancel

    删除某条数据 弹出删除提示框 点击取消 浏览器控制台报错 报错原因: this.$confirm方法内置promise方法, 所以不能把.catch()去掉(因为取消操作时,无法捕获) 解决方法: 在 ...

  6. vue报错Uncaught (in promise) NavigationDuplicated:Avoided redundant navigation

    vue-router.esm.js?3423:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation ...

  7. 记录一个vue项目报错UnhandledPromiseRejectionWarning: Unhandled promise rejection.

    使用vue-cli创建vue项目,加入一些之前的代码,然后打包运行报错: (node:4892) UnhandledPromiseRejectionWarning: Unhandled promise ...

  8. 解决路由报错Uncaught (in promise) NavigationDuplicated:

    Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: " ...

  9. vue启动报错Module build failed: Error: ENOENT: no such file or directory

    vue启动项目报错,一大坨  如下 Module build failed: Error: ENOENT: no such file or directory, scandir '/Users/son ...

  10. 记一个vue router相关的 Uncaught (in promise) undefined 问题

    在做一个项目时,登录页面调用路由跳转时 this.$router.push({ path: this.redirect || '/' }) 会出现一个错误提示: Uncaught (in promis ...

最新文章

  1. 2022-2028年中国氢化环氧树脂产业发展动态及投资趋势预测报告
  2. 手把手教你使用Flex 3——《Flex 3程序设计》
  3. AndroidStudio基础视频教程-整理
  4. Spring中配置Quartz的misfireInstruction
  5. JDBC告警系列(一)The server time zone value 'ÖÐ' is unrecognized or represents more than one time zone....
  6. 机器人学中的一些概念3——雅克比矩阵
  7. java销售额查询_用JSP+JavaBean开发模式实现一个销售额的查询
  8. leetcode 236. 二叉树的最近公共祖先LCA(后序遍历,回溯)
  9. yarn当中各个主要组件的作用及调度器
  10. java fork join demo_Fork/Join框架 demo
  11. 批量识别PDF文件(图片类型)中的文字
  12. 北京地区首届区块链黑客松-DoraHacks
  13. 数据挖掘技术-主键合并数据准备数据
  14. git lfs官网翻译
  15. Java图形用户界面设计音乐播放器
  16. 当中学的计算机老师需要什么学历,中学老师需要什么学历?
  17. 计算机考研408 - 操作系统 - 核心知识点总结 - 第一章操作系统概述(23考研408大纲)
  18. 有用的Web或者手机UI设计工具
  19. Semantic SLAM源码解析
  20. java计算机毕业设计家电售后管理系统演示录像2021源码+mysql数据库+系统+lw文档+部署

热门文章

  1. 利用Python解决生物问题-批量获取最长转录本
  2. c语言中实型标准,C语言中的基本数据类型--实型数据
  3. 如何绘制数据可视化世界地图
  4. Swift学习:类和结构体
  5. taro开发小程序页面左右乱滑动
  6. 【机器学习基础】(一) 爬山算法 ( Hill Climbing )与模拟退火(SA,Simulated Annealing)
  7. 小程序如何实现像淘宝那样错开排版
  8. 用计算机电源 家用电源,电源不该盲目选--聊聊组装机电源
  9. 最权威的身份证号码的正则表达式
  10. 使用DataFrame转换.txt文件某一列的数据类型