JavaScript:变量在等待中未定义
下面我有一个代码片段,它从StackOverflow的站点输出descriptionJavaScript:变量在等待中未定义,javascript,node.js,promise,Javascript,Node.js,Promise,下面我有一个代码片段,它从StackOverflow的站点输出descriptionmeta标记。我的问题是,当我在一开始就显式定义常量url时,我收到一个错误,说url在页面内部。evaluate()未定义。我对JS中的变量作用域不是很熟悉,我可以知道为什么会出现这个错误以及如何修复它吗 const puppeteer = require('puppeteer'); const url = "https://stackoverflow.com/"; function ru
meta
标记。我的问题是,当我在一开始就显式定义常量url
时,我收到一个错误,说url
在页面内部。evaluate()未定义。我对JS中的变量作用域不是很熟悉,我可以知道为什么会出现这个错误以及如何修复它吗
const puppeteer = require('puppeteer');
const url = "https://stackoverflow.com/";
function run () {
return new Promise(async (resolve, reject) => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
let temp = await page.evaluate(() => {
let metaTag = document.querySelector('head > [name="description"]');
const output = url + ": " + metaTag.getAttribute('content');
return output;
})
browser.close();
return resolve(temp);
} catch (error) {
return reject(error)
}
})
}
run().then(console.log).catch(console.error);
在理解JS中的变量范围时,这不是一个问题
page.evaluate
只是行为不正常,因为函数是在页面的上下文中计算的,而不是在定义它的上下文中计算的
如果要向其传递数据,请将其作为参数传递:
let temp = await page.evaluate((url) => {
// ...
}, url)
在理解JS中的变量范围时,这不是一个问题
page.evaluate
只是行为不正常,因为函数是在页面的上下文中计算的,而不是在定义它的上下文中计算的
如果要向其传递数据,请将其作为参数传递:
let temp = await page.evaluate((url) => {
// ...
}, url)