Soy nuevo en el desarrollo de Backend. Desde los últimos días, estoy tratando de obtener una respuesta de la API y mostrarla en mi página html y recibo constantemente este error al analizar JSON. Estoy usando NodeJS con ExpressJS. ¡Cualquier ayuda sería muy apreciada!
Aquí está el error: indefinido:1 {"paginación":{"límite":100,"desplazamiento":0,"recuento":22,"total":22},"datos":[{"fecha_vuelo":" 2022-05-01","flight_status":"aterrizó","salida":{"aeropuerto":"Vadodara","timezone":"Asia/Kolkata","iata":"BDQ","icao": "VABO","terminal":null,"gate":null,"retraso":16,"programado":"2022-05-01T11:55:00+00:00","estimado":"2022-05 -01T11:55:00+00:00","real":"2022-05-01T12:10:00+00
SyntaxError: final inesperado de la entrada JSON en JSON.parse () en IncomingMessage. (C:\Users\2kwattz\Desktop\2kaerostack\server.js:31:35) en IncomingMessage.emit (nodo:eventos:390:28) en IncomingMessage.Readable.read (nodo:internal/streams/readable:527: 10) en flujo (nodo:interno/flujos/legible:1012:34) en resume_ (nodo:interno/flujos/legible:993:3) en processTicksAndRejections (nodo:interno/proceso/task_queues:83:21)
Aquí está el código:
app.post("/airportracker", function (req, res) { let apiKey = 'somekey'; let airportiata = req.body.airportiata; let url = `http://api.aviationstack.com/v1/flights?access_key=${apiKey}&dep_iata=${airportiata}`; http.get(url, function (response) { response.on('data', function (data) { console.log(data); let flightData = JSON.parse(data); flightData = flightData.stringify(); console.log(flightData); let flightDate = flightData.data[0].flight_date; res.send(`${flightDate}`) }); }) })Aquí está el código del formulario:
<form class="airportracker" action="/airportracker" method="POST"> <label for="airportIata"> Enter Airport IATA </label> <input type="text" name="airportiata" id="airportiata"> <a href="#"> Psst! Don't know your Airport IATA ? Click here ! </a> <button class="btn" id="airportTrackerSubmit" type="submit"> Track Flights </button> </form>Estaría muy agradecido si alguien me da una solución. ¡Muchas gracias de antemano!
Supone que toda la respuesta viene con un evento data , pero esto no está garantizado, por eso termina con solo una primera parte de JSON (con un "final inesperado").
Debe estar preparado para varios eventos de data , seguidos de un solo evento end :
var data = ""; response.on('data', function(chunk) { data += chunk.toString(); }) .on('end', function() { console.log(data); /* Rest of your code */ }); (Sin embargo, no entiendo de dónde viene el undefined:1 en su registro de errores).