在vue項目中,如果使用$router.push跳轉到一個相同的路由報錯.
在vue-router在3.1.0版本之后,push和replace方法會返回一個promise對象,如果跳轉到相同的路由,就報promise uncaught異常.
方案01-降版本
使用vue-router 3.1.0之前的版本就不會有這個錯誤。但是不推薦,因為這樣就無法得到vue-router新版本提供的功能了。
方案2-使用catch捕獲異常
在使用push或者replace的時候,需要使用catch來處理異常
// 在使用push的時候,需要使用catch來處理可能出現的異常this.$router.push('/login').catch(err=>{})
缺點:在使用push的時候,都需要使用catch處理
方案3-修改push方法
在router/index.js導入VueRouter的時候,進行全局的處理
const routerPush = Router.prototype.push; Router.prototype.push = function push(location) { return routerPush.call(this, location).catch((error) => error); };