Entonces, este fragmento de código está devolviendo la descripción de la palabra en json de https://sjp.pl/ webiste, palabra que el usuario proporcionó antes en el cuerpo de la solicitud json
Y el problema es que quiero devolver var 'desc' en res.send pero no está definido. ¿Cómo puedo acceder a eso y enviarlo?
Creo que es porque item.push($(this).text()) funciona solo en esta función axios y solo se puede acceder a este ámbito
const item = []; var desc; app.post('/test', (req, res) => { const { word } = req.body; if(!word) { res.status(418).send({error: 'no word provided'}) } console.log(word) axios(`https://sjp.pl/${word}`).then(res => { const html = res.data const $ = cheerio.load(html) $('p').each(function() { item.push($(this).text()) }) desc = item[3] console.log(desc) // working until here }) console.log(desc) // undefined here res.send({ description: `${desc}` }) })Use res dentro de los axios como se muestra a continuación. No está undefined porque el desc de descripción termina dentro de esa función anónima. Además, el axios es async . Es posible que deba usar await para sync o puede seguir la idea que propuse a continuación.
const item = []; var desc; app.post('/test', (req, res0) => { const { word } = req.body; if(!word) { res0.status(418).send({error: 'no word provided'}) } console.log(word) axios(`https://sjp.pl/${word}`).then(res => { const html = res.data const $ = cheerio.load(html) $('p').each(function() { item.push($(this).text()) }) desc = item[3] res0.send({ description: `${desc}` }) }) })