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: response.json no es una función” al intentar analizar json.

Estoy obteniendo un error que no entiendo. Estoy obteniendo una URL de API en formato JSON, seguido de un análisis de JSON a objeto JS, utilizando json()

const response = fetch('https://power.larc.nasa.gov/api/temporal/monthly/point?parameters=ALLSKY_SFC_SW_DNI&community=RE&longitude=48.0000&latitude=27.0000&format=JSON&start=2001&end=2020');

const data = response.json();

¿Alguien puede explicar este error, por favor?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo ver el error que estás encontrando. Sin embargo, puedo sugerir algunos errores comunes que pueden ocurrir en este escenario.

    Un posible error podría ser que la función fetch() es asíncrona, lo que significa que no devuelve inmediatamente la respuesta, sino una promesa que se resolverá con la respuesta. Por lo tanto, intentar analizar la respuesta con response.json() inmediatamente puede provocar un error. Para solucionarlo, es posible que debas esperar la respuesta antes de analizarla, de la siguiente manera:

    const response = await fetch('https://power.larc.nasa.gov/api/temporal/monthly/point?parameters=ALLSKY_SFC_SW_DNI&community=RE&longitude=48.0000&latitude=27.0000&format=JSON&start=2001&end=2020');
    
    const data = await response.json();
    

    Otro posible error puede estar relacionado con las políticas de CORS (Compartir recursos de origen cruzado), que impiden que el navegador acceda a recursos de un dominio diferente al que se está ejecutando el script. Si la API desde la que estás intentando obtener datos no permite solicitudes de origen cruzado, es posible que debas agregar algunos encabezados a tu llamada fetch() para permitirlo, o utilizar un proxy en el lado del servidor para obtener los datos en nombre de tu aplicación de lado del cliente.

Comments are closed.