Проблема с маршрутизатором при настройке Nuxt

#nuxt.js #vue-router #nuxt-auth

Вопрос:

Я видел, как несколько человек публиковали сообщения о похожих (если не об одной и той же проблеме), но ни одно из решений не работает для меня.

У меня есть стандартный шлюз аутентификации, использующий локальную стратегию (электронная почта, пароль), и я хочу перенаправить его в root (или на их специальную страницу) при успешной аутентификации.

Это должно быть так же просто, как this.$router.push('/') или this.$router.push(user) , но вообще ничего не происходит. Это и есть код…

 async initialise({ commit, state}) {
    this.$toast.info('Initialising...');
    try {
      const { data } = await this.$axios.get(`/initialise/${state.auth.user.shop}`);
      commit('INITIALISE_SHOP', data.shop);
      commit('employees/SET_EMPLOYEES', data.employees, { root: true })
      this.$toast.success('Login Successful');
      this.$router.push('/'); <<< this is the offending line
    } catch (error) {
      this.$toast.error('Unable to fetch schedule data. Please contact the Support Team.');
    }
  }
 

Что еще более странно, если я избавлюсь от ВСЕГО кода и просто включу в него функцию маршрутизатора, это вообще ничего не даст.

Позвольте мне добавить к этому еще кое-что…

Если я добавлю console.log() в код ГДЕ УГОДНО, он войдет в журнал. Я могу поместить его перед http-запросом, я могу поместить его перед $toast или я могу поместить его ПОСЛЕ неудачного this.$router.push('') , и он будет регистрировать все, что я вставляю.

Комментарии:

1. Вы уверены, что этот код вообще достигнут? Вы пробовали console.log там?

2. Похоже, этот код находится в файле хранилища. Вы проверяли this.$router , определено ли это? Есть ли какая-либо ошибка в консоли?

3. @kissu Код определенно достигнут, если я поставлю его первым, он будет выполняться через всю функцию. Если я ТОЛЬКО введу этот код, он просто ничего не сделает вообще. @Mythos это определенно определено, это просто игнорируется. Я также пытался this.$nuxt.$router и this._vm.router

4. Не могли бы вы, пожалуйста, протестировать с помощью await dispatch , так как в конце вы должны использовать действия, а не мутации.

5. По какому маршруту вы идете, когда вызываете этот код? Работает ли это, если вы делаете что-то подобное await this.initialise(); await this.$router.push('/') ? У вас случайно нет перенаправлений в других местах вашего приложения в наблюдателях? Также вы можете попытаться вызвать this.$router.push() с await помощью, так как это асинхронная функция