#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
помощью, так как это асинхронная функция