我在下面有一个代码片段,我的问题是我在 page.evaluate() 内部收到一条错误消息是未定义的,而我在一开始url就明确定义了 const 。url我对 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);
1 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
这不是您对 JS 中变量范围的理解的问题。
page.evaluate只是行为不正常,因为该函数是在页面上下文而不是定义它的上下文中计算的。
如果要将数据传递给它,请将其作为参数:
let temp = await page.evaluate((url) => {
// ...
}, url)
添加回答
举报
0/150
提交
取消