He estado enfrentando este problema durante los últimos días. Investigué lo más que pude y no pude encontrar una solución.
Estoy usando React Native 0.64.2 y la última versión beta de Firebase 9.0.0.8 para este proyecto en un proyecto cli nativo de reacción. El emulador de Windows y Android son mis dispositivos a partir de hoy. El error ocurre una vez que intento guardar un usuario en Firestore. Esto es lo que obtengo en la consola:
ERROR [2021-08-19T15:23:46.836Z] @firebase/firestore: Firestore (9.0.0-beta.8): no se pudo acceder al backend de Cloud Firestore. El backend no respondió en 10 segundos. Esto generalmente indica que su dispositivo no tiene una buena conexión a Internet en este momento. El cliente funcionará en modo fuera de línea hasta que pueda conectarse con éxito al backend.
También recibo algunas advertencias, aunque no estoy seguro de si están relacionadas con este problema.
ADVERTENCIA Configurar un temporizador durante un largo período de tiempo, es decir, varios minutos, es un problema de rendimiento y corrección en Android, ya que mantiene activo el módulo del temporizador, y los temporizadores solo se pueden activar cuando la aplicación está en primer plano.
WARN Posible rechazo de promesa no controlada (id: 1): FirebaseError: no se pudo obtener el documento porque el cliente está desconectado.
WARN [2021-08-19T15:23:46.836Z] @firebase/firestore: Firestore (9.0.0-beta.8): error en el transporte del canal web de conexión: {"predeterminado": falso, "g":{"A": verdadero, "J": nulo, "R": [Circular], "g": {"$": verdadero, "$a": 2, "A": 3, "B": nulo, "Ba": 12, "C": 0 [y más así]
En algún momento, la última advertencia seguirá apareciendo con unos pocos segundos o minutos de diferencia entre cada una. Y de alguna manera mi usuario y toda su información se guardaron en Firestore. Solo funcionó una vez.
Aquí están las pocas cosas que traté de resolver:
Todo eso no fue realmente exitoso. Sabiendo que usé las pruebas de red de Firebase y todo funcionó perfectamente, no tengo idea.
Aquí está mi código:
const usersRef = collection(db, "users") const onSignUp = () => { if(isSelectedSoft === true) { createUserWithEmailAndPassword(auth, email, password) .then(res => { setDoc(doc(usersRef, auth.currentUser.uid), { email, pseudo, mood: "soft", gender, age, country }) }) .catch(error => { console.log(error); }); };Gracias por tu ayuda !
Resolví este problema después de no usar variables .env.
No es seguro, pero funcionó.
¿Tiene la intención de utilizar la versión beta modular? si es así, intente revertir una subversión. Pero, en última instancia, no se recomienda la versión beta para la producción y estos errores deben informarse al equipo beta.
Además, React Native tiene su propia solución para Firebase para aplicaciones React-Native llamada RN-Firebase, recomiendo usarlas hasta que actualicen su API.