亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號