Me encuentro con net::ERR_NAME_NOT_RESOLVED cuando llamo a la API de mi proyecto de firebase. He intentado usar varios dispositivos, dos conexiones a Internet, una VPN, Linux, macOS, Windows 11 para descartar cualquier error causado por mis dispositivos. Cuando navego al enlace API en mi navegador, no se agota el tiempo de espera y recibo una respuesta. El problema parece ser cuando se usa la función httpsCallable proporcionada por Firebase. No hay registros de la función a la que se llama en firebase fuera de navegar a ella en un navegador.
Aquí está mi código:
const functions = firebase.functions console.log(functions) const loginWithCode = httpsCallable(functions, 'loginWithCode') loginWithCode(loginPayload) .then((result) => { console.log(result) }) .catch((error) => { console.log("ERROR CAUGHT HERE") console.log(error) });La salida de la consola de mi navegador:
service.ts:206 POST https://us-central1-%22crowd-pleaser-75fd7%22%2C.cloudfunctions.net/loginWithCode net::ERR_NAME_NOT_RESOLVED App.tsx:79 ERROR CAUGHT HERE App.tsx:80 FirebaseError: internalEl resultado de ingresar directamente el enlace en la interfaz web de firebase:
{"error":{"message":"Bad Request","status":"INVALID_ARGUMENT"}}¿Hay algo que me estoy perdiendo que está creando este problema? He buscado en Internet y StackOverflow en busca de una respuesta, y todas las soluciones proporcionadas no han funcionado. El método implementado es exactamente como se hace en los documentos de Firebase aquí
Editar: parece que el enlace al que se envía mi solicitud de publicación tiene un formato extraño. ¿Quizás este podría ser el problema? Sin embargo, no puedo entender por qué está formateado de esta manera.
Encontré una solución al problema. Mi especulación en mi edición era correcta, la URL a la que httpsCallable enviaba la solicitud de publicación tenía un formato incorrecto. No estoy seguro de por qué se formateó de esta manera, sin embargo, la solución rápida es establecer el atributo de clase customDomain del objeto devuelto por getFunctions en el dominio correcto. En mi caso esto se hizo haciendo:
functions.customDomain = functions.customDomain = 'https://us-central1-crowd-pleaser-75fd7.cloudfunctions.net'La variable 'funciones' en el código anterior es el atributo de clase devuelto por el método getFunctions proporcionado por Firebase
Si bien no soy un experto en Firebase, el problema es que está realizando una solicitud HTTP incorrecta con loginWithCode(loginPayload) , no hay nada malo con su código que yo pueda ver al menos.
Por cierto, está utilizando: const loginWithCode = httpsCallable(functions, 'loginWithCode') en lugar de un simple const loginWithCode = httpsCallable('addMessage') como se describe aquí: Google FireBase Docs
Y luego, haciendo un loginWithCode({ text: messageText })
Además, como puede ver aquí: Google Firebase Docs:firebase.functions.HttpsCallable
Podrá pasar cualquier tipo de datos a la función HttpsCallable, por lo que terminamos en el punto de inicio: está realizando una solicitud HTTP incorrecta.
Como se describe en la respuesta HTTP, el error es: net::ERR_NAME_NOT_RESOLVED esto sucede cuando no se puede resolver una solicitud de DNS, entonces no existe un dominio, por lo que todo esto conduce a que no hay forma de enviar la solicitud HTTP ya que hay no es una ruta en internet que se haya encontrado para enviarlo.
Mientras decodifica la URL que está realizando la solicitud HTTP
service.ts:206 POST https://us-central1-%22crowd-pleaser-75fd7%22%2C.cloudfunctions.net/loginWithCode net::ERR_NAME_NOT_RESOLVED App.tsx:79 ERROR CAUGHT HERE App.tsx:80 FirebaseError: internalEncontrará que está enviando la solicitud HTTP a:
https://us-central1-"crowd-pleaser-75fd7",.cloudfunctions.net/loginWithCode Como puede ver, encontrará que al realizar la solicitud HTTP será un problema: ya que no puede poner "crowd-pleaser-75fd7", en la URL para realizar la solicitud HTTP. Eso está generando el error net::ERR_NAME_NOT_RESOLVED
No estoy seguro de qué está tratando de hacer exactamente, pero creo que la URL correcta para la solicitud HTTP debería ser:
https://us-central1-crowd-pleaser-75fd7.cloudfunctions.net/loginWithCode Con esta URL, la solicitud HTTP debe pasar, al menos. Y sugiero que verifique el loginPayload para solucionar esto.