VueJS «RangeError: Превышен максимальный размер стека вызовов» - PullRequest
2 голосов
/ 16 апреля 2020

Пожалуйста, помогите мне исправить этот

маршрутизатор. js

routes: [{
  path: "",
  component: () => import("@/layouts/full-page/FullPage.vue"),
  children: [{
    path: "/pages/login",
    name: "page-login",
    component: () => import("@/views/pages/Login.vue")
  }, {
    path: "/pages/signup",
    name: "page-signup",
    component: () => import("@/views/pages/Signup.vue")
  }, {
    path: "/pages/error-404",
    name: "page-error-404",
    component: () => import("@/views/pages/Error404.vue")
  }]
}, {
  path: "*",
  redirect: "/pages/error-404"
}]

и

router.beforeEach((to, from, next) => {
  if (to.path != "/pages/login") {
    if (auth.isAuthenticated()) {
      next();
    } else {
      if(to.path == "/pages/signup") {
        next("/pages/signup");
      }else{
        next("/pages/login");
      }
    }
  } else {
    next();
  }
});

Когда я открываю pages / login ошибка не происходит. Но когда я открываю страниц / регистрацию , это всегда ошибка.

Это ошибка в консоли:

"RangeError: Максимальный вызов превышен размер стека "

1 Ответ

1 голос
/ 16 апреля 2020

Это приведет к бесконечному l oop:

if(to.path == "/pages/signup") {
        next("/pages/signup");

Он перенаправляет на тот же маршрут, по которому уже идет, что вызывает повторный запуск beforeEach, а затем запускает еще одно перенаправление на Следующая итерация. Измените это на:

if(to.path == "/pages/signup") {
        next();
...