es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TypeError: res.json no es una función (no se puede obtener los datos de búsqueda)

Estoy tratando de obtener una respuesta utilizando la API fetch, pero me quedé atascado en un error como mencioné a continuación. Aquí está mi código:

const DefaultLayout = () => {
let history = useHistory()
const callHomePage = async () => {
try {
const res = fetch('http://localhost:4000/api/authenticate', {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-type': 'application/json',
},
credentials: 'include',
})
console.log(res)
const data = await res.json()
console.log(data)
if (!res.status === 200) {
const error = new Error(res.error)
throw error
}
} catch (err) {
console.log(err)
history.push('login')
}
}

Error: TypeError: res.json no es una función
Promise {} muestra pendiente.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que el método fetch() devuelve una promesa que debe ser resuelta. En el código proporcionado, res es una promesa y no el objeto de respuesta. Para obtener el objeto de respuesta, debemos esperar la promesa devuelta por fetch(). Por lo tanto, necesitamos modificar el código de la siguiente manera:


    const DefaultLayout = () => { let history = useHistory() const callHomePage = async () => { try { const res = await fetch('http://localhost:4000/api/authenticate', { method: 'GET', headers: { Accept: 'application/json', 'Content-type': 'application/json', }, credentials: 'include', }) console.log(res) const data = await res.json() console.log(data) if (res.status !== 200) { const error = new Error(res.error) throw error } } catch (err) { console.log(err) history.push('login') } }

    Al esperar el método fetch(), nos aseguramos de que se devuelva el objeto de respuesta en lugar de la promesa, que luego se puede analizar utilizando el método .json(). También tenga en cuenta que en la declaración if, estamos verificando si el estado de la respuesta no es igual a 200, en lugar de verificar si es falso, lo que podría ser el caso en el código anterior debido al uso incorrecto del operador de negación (!).

Comments are closed.