Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

331
Views
Variable out of scope (probably) - undefined

So this piece of code is returning description of word in json from https://sjp.pl/ webiste, word which user provied before in request json body

And problem is that i want to send back var 'desc' in res.send but its undefined. How I can access that and send it?

I think thats because item.push($(this).text()) is working only in this axios function and can be accessed only in this scope


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}`
    })
})
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Use res inside the axios like below. You are getting undefined because the desc scope ends inside that anonymous function. Moreover the axios is async. You may need to use await to make it sync or can follow the idea I proposed below.

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}`
        })
    })
})
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!