Estoy tratando de obtener el título de una página web para esta solicitud divertida y saludos. Estoy enfrentando este problema.
¿Alguien puede ayudarme a identificar el error que he hecho en mi código?
aquí está mi código
var request = require("request"); var cheerio = require("cheerio"); jsonData = [ { Domain: "bar-n-ranch.com" }, { Domain: "barcelona-enabled.com" }, { Domain: "barefootamelia.com" }, { Domain: "barmranch.com" }, { Domain: "barnstablepatriot.com" }, { Domain: "barrieapartmentrentalsonline.com" }, { Domain: "basquehomes.com" }, { Domain: "bassmaster.com" }, { Domain: "basswoodresort.com" }, ]; function fetchTitle(url, onComplete = null) { request(url, function (error, response, body) { var output = url; // default to URL if (!error && response.statusCode === 200) { var $ = cheerio.load(body); console.log(`URL = ${url}`); var title = $("head > title").text().trim(); console.log(`Title = ${title}`); output = `[${title}] (${url})`; } else { console.log(`Error = ${error}, code = ${response.statusCode}`); } console.log(`output = ${output} \n\n`); if (onComplete) onComplete(output); }); } jsonData.forEach(function (table) { var tableName = table.Domain; var URL = "http://" + tableName; fetchTitle(URL); });cuando paso un valor como fetchtitle("https://www.googlecom") funciona, pero recibo un error cuando intento hacer un bucle de datos JSON
seguimiento de la pila de errores ^
TypeError: Cannot read properties of undefined (reading 'statusCode') at Request._callback (C:\1\naveen\Project\Final\scrap example\test.js:29:56) at self.callback (C:\1\naveen\Project\Final\scrap example\node_modules\request\request.js:185:22) at Request.emit (node:events:390:28) at Request.onRequestError (C:\1\naveen\Project\Final\scrap example\node_modules\request\request.js:877:8) at ClientRequest.emit (node:events:390:28) at Socket.socketErrorListener (node:_http_client:447:9) at Socket.emit (node:events:390:28) at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3)Muchas gracias por adelantado
A veces, cuando realiza un bucle a través de varias solicitudes en el servidor, hay posibilidades de que el socket se cuelgue (ocupado en alguna otra solicitud) o el servidor no puede poner en cola la solicitud, lo que puede dar como resultado que no se responda a la solicitud. La mejor solución para esto es que primero debe verificar el objeto de respuesta de la solicitud antes de acceder a las propiedades en él.
if (!error && (response && response.statusCode) === 200) { var $ = cheerio.load(body); console.log(`URL = ${url}`); var title = $("head > title").text().trim(); console.log(`Title = ${title}`); output = `[${title}] (${url})`; } else { console.log(`Error = ${error}, code = ${response && response.statusCode}`); }