Как заглушить заглушить/исправить ошибку навигации
Находясь в Home, пользователь пытается перейти в админку, но у него не достаточно прав. В этом случае, роут не должен сработать или должен перекинуть в Home.
import store from '@/store';
export default [
{
path: '/admin',
name: 'Admin',
meta: {
auth: true,
is_admin: true,
},
beforeEnter: (to, from, next) => {
if (!(store.getters.isSuperAdmin || store.getters.isAdmin)) {
next({
name: 'Home',
});
// Или
// next(false);
}
next();
},
component: () => import(/* webpackChunkName: "admin" */ 'Views/admin/Admin.vue'),
},
];
Но получаю ошибку:
Uncaught (in promise) Error: Redirected when going from "/" to "/admin" via a navigation guard.
at createRouterError (vue-router.esm.js:2008)
at createNavigationRedirectedError (vue-router.esm.js:1967)
at vue-router.esm.js:2314
at _callee$ (index.ts:15)
at tryCatch (runtime.js:63)
at Generator.invoke [as _invoke] (runtime.js:293)
at Generator.next (runtime.js:118)
at asyncGeneratorStep (asyncToGenerator.js:3)
at _next (asyncToGenerator.js:25)
at asyncToGenerator.js:32
В компонентах от подобной ошибки я избавлялся так:
goToIfAllowed(name: string): void {
if (this.canToRoute(name)) {
this.$router.push({
name: name,
});
}
}
А как это победить в хуке?