Установка firebase.User в vuex приводит к вечному циклу - PullRequest
0 голосов
/ 18 марта 2019

ОБНОВЛЕНИЕ: эта ошибка возникает только при включенном строгом режиме vuex

Я создаю приложение Vue с аутентификацией firebase, но приложение завершается ошибкой со следующими сообщениями об ошибках:

[Vue warn]: ошибка в обратном вызове для наблюдателя "function () {return this._data. $$ state}": "Ошибка: [vuex] Не изменять состояние хранилища vuex вне обработчиков мутаций."

Ошибка:[vuex] Не изменять состояние хранилища vuex вне обработчиков мутаций.

Uncaught RangeError: Превышен максимальный размер стека вызовов

Ошибка возникает, когда я фиксирую пользователя в моем хранилище Vuex в моемФайл main.ts:

firebase.auth().onAuthStateChanged(user => {
  if (user) {
    store.commit(constants.auth.SET_USER, user) // THIS LINE
    store.commit(constants.auth.SET_AUTHENTICATED, true)
    router.push('/')
  } else {
    store.commit(constants.auth.SET_USER, null)
    store.commit(constants.auth.SET_AUTHENTICATED, false)
    router.push('/signup')
  }
  if (!app) {
    app = new Vue({
      router,
      store,
      render: (h) => h(App),
    }).$mount('#app')
  }
})

Вот моя мутация:

[constants.auth.SET_USER](state: AuthState, payload: firebase.User): void {
      state.user = payload
}

Я могу сказать от Vue devtools, что мутация действительно происходит, и что пользователь фиксируется в хранилище, но я понятия не имею, почему эта ошибка происходит.Вы можете мне помочь?

Я пытался закомментировать почти все остальное в приложении, и это единственные части, которые вызывают какие-либо проблемы.

...