问题
在登录页面成功获得后台传来的token后,无法跳转主页,报错如下
Navigation cancelled from "/?redirect=%2Fhome" to "/home" with a new navigation
这个错误是vue-router内部错误,没有进行catch处理,导致的编程式导航跳转问题,往同一地址跳转时会报错的情况,也是vue-router3.0以上的问题
解决方法:
- 在路由router/index.js文件下添加:
//解决编程式路由往同一地址跳转时会报错的情况
const originalPush = VueRouter.prototype.push;
const originalReplace = VueRouter.prototype.replace;
//push
VueRouter.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
VueRouter.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版本为3.0,成功
npm i vue-router@3.0 -S