#node.js #vue.js #routing #vue-router
#node.js #vue.js #маршрутизация #vue-маршрутизатор
Вопрос:
По сути router.beforeEach()
, метод делает что-то, чего я не понимаю.
Я понимаю суть проблемы в том, что когда мой маршрут перенаправляется на / login, он будет делать это примерно 960 раз или около того, пока не возникнет ошибка.
мой код выглядит так:
Маршрутизатор:
let router = new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path:'/login',
name: 'login',
component: Login,
meta: {
requiresAuth: 'false'
}
},
{
path:'/register',
name: 'register',
component: Register,
meta: {
requiresAuth: 'false'
}
},
{
path: '/',
name: 'home',
component: Home,
meta: {
requiresAuth: 'True'
}
}
]
})
метод beforeEach()
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
console.log(to.matched.some(record => record.meta.requiresAuth))
if (localStorage.getItem('jwt') == null) {
next({
path: '/login',
params: { nextUrl: to.fullPath }
})
} else {
next()
}
} else {
if (localStorage.getItem('jwt') != null) {
next({
path: '/',
params: { nextUrl: '/' }
})
} else {
next()
}
}
})
Я просмотрел бесчисленное количество потоков и других мест, и ни у кого нет такой же проблемы, как у меня (или я пропускаю вещи). У кого-нибудь есть идея о том, как исправить, и что на самом деле происходит, чтобы ошибка возникла в этом? из того, что я могу сказать, у меня нет ничего, названного дважды, или любая другая функция / компонент запускается, когда этого не должно быть.
Ответ №1:
Исправлено. Я немного особенный в голове. Для тех, у кого такая же проблема, просто измените маршруты на
routes: [
{
path: '/login',
name: 'login',
component: Login,
meta: {
requiresAuth: false
}
},
{
path:'/register',
name: 'register',
component: Register,
meta: {
requiresAuth: false
}
},
{
path: '/',
name: 'home',
component: Home,
meta: {
requiresAuth: true
}
}
]
Комментарии:
1. Не могли бы вы еще немного объяснить, что вы сделали? Я не вижу никаких изменений?
2. @dexter, да, в основном метаданные, которые я применяю в каждом маршруте, я устанавливаю значение requiresAuth в виде строки вместо логического значения. И JS возвращает false при ‘true’ == true.
3. Ах, tnx, теперь я это вижу!
Ответ №2:
Для тех, кто получает эту ошибку без какой-либо очевидной ошибки, попробуйте удалить node_modules и запустить npm install
снова. Я получил эту ошибку при переключении ветвей git, и единственное, что изменилось, были пакеты, поэтому я попробовал выше, и это избавило от проблемы 🙂