Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
TypeError no capturado (en promesa): no se pueden leer las propiedades de undefined (leyendo '$ store') en Nuxt js y la autenticación de base de fuego

Estoy implementando la autenticación de Firebase en la aplicación Nuxt js y estoy muy cerca. El problema es que quiero cometer una mutación vuext dentro de la función predeterminada de onAuthStateChanged() . Pero cada vez que cargo la página, muestra el siguiente error: "Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '$store')"

¿Pueden ayudarme con este problema?

Gracias.

 import firebase from '@/plugins/firebase' import { getAuth, signInWithEmailAndPassword, onAuthStateChanged } from "firebase/auth" export const state = () => ({ user: null, authIsReady: false }) export const mutations = { updateUser(state, payload) { state.user = payload console.log('user is updated', state.user) }, setAuthIsReady(state, payload) { state.authIsReady = payload console.log(state.authIsReady) } } export const actions = { async signIn(context, { email, password }) { console.log('sign in action') const res = await signInWithEmailAndPassword(getAuth(), email, password) if (res) { context.commit('updateUser', res.user) } else { throw new Error('could not complete sign in') } } }

// esta función está causando el problema

 const unsub = onAuthStateChanged(getAuth(), (user) => { this.$store.commit('updateUser', user) unsub() })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El archivo firebase.js que estoy importando "auth" desde abajo, es solo la configuración regular de Firebase en cosas de Nuxt... y las líneas importantes son: const auth = getAuth() export { auth }

  1. Pruebe el siguiente código... Tengo el mío en un archivo llamado "fireauth.js" en la carpeta de complementos (no olvide importar el archivo "fireauth.js" en su nuxt.config.js)

 import { auth } from "~/plugins/firebase.js"; export default (context) => { const { store } = context return new Promise((resolve, reject) => { auth.onAuthStateChanged((user) => { if (user) { return resolve(store.dispatch('onAuthStateChangedAction', user)) } return resolve() }) }) }

  1. En su archivo store/index.js agregue la siguiente función asíncrona en su configuración de acciones:

     async onAuthStateChangedAction(vuexContext, authUser) { if (!authUser) { //in my case I'm just forcing user back to sign in page, only authorized users allowed//redirect from here this.$router.push({ path: '/signin', }) }else { //call your commits or do whatever you want to do vuexContext.commit("setUser", authUser.email); }

    },


La primera parte del código asegura que cuando el estado de autenticación cambia en Firestore, este cambio se comunica a la acción que acaba de crear en la tienda. La segunda parte del código, la función asíncrona en la tienda logra lo que usted quiera que haga dentro de la tienda.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda