变量超出范围(可能)——未定义
Variable out of scope (probably) - undefined
所以这段代码从 https://sjp.pl/ 网站返回 json 中的单词描述,用户之前在请求 json body
中提供的单词
问题是我想在 res.send 中发回 var 'desc' 但它未定义。我如何访问并发送它?
我认为那是因为 item.push($(this).text()) 只在这个 axios 函数中工作,并且只能在这个范围内访问
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}`
})
})
在 axios
中使用 res
,如下所示。您得到 undefined
是因为 desc
范围在该匿名函数内结束。此外 axios
是 async
。您可能需要使用 await
使其成为 sync
或者可以按照我在下面提出的想法。
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}`
})
})
})
所以这段代码从 https://sjp.pl/ 网站返回 json 中的单词描述,用户之前在请求 json body
中提供的单词问题是我想在 res.send 中发回 var 'desc' 但它未定义。我如何访问并发送它?
我认为那是因为 item.push($(this).text()) 只在这个 axios 函数中工作,并且只能在这个范围内访问
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}`
})
})
在 axios
中使用 res
,如下所示。您得到 undefined
是因为 desc
范围在该匿名函数内结束。此外 axios
是 async
。您可能需要使用 await
使其成为 sync
或者可以按照我在下面提出的想法。
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}`
})
})
})