为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript:变量在等待中未定义

JavaScript:变量在等待中未定义

哈士奇WWW 2023-06-15 09:45:10
我在下面有一个代码片段,我的问题是我在 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)


查看完整回答
反对 回复 2023-06-15
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信