【问题标题】:Cannot access in the second page.evaluate a variable defined in the first page.evaluate (node.js puppeteer)无法在第二页访问。评估在第一页中定义的变量。评估(node.js puppeteer)
【发布时间】:2021-04-23 07:20:33
【问题描述】:
await page.evaluate(() => {var a = 10; console.log(a);});
await page.evaluate(() => {console.log(a);});

第二个报错:

评估失败:ReferenceError: a is not defined

这两个调用似乎在 2 个不同的浏览器上下文中工作?

我也无法在浏览器的控制台中访问这个变量,但是浏览器的日志正在显示:

【问题讨论】:

  • 通过let aevaluate的回调外部声明a变量,然后在回调内部使用a = 10

标签: javascript node.js puppeteer


【解决方案1】:

var 变量是函数范围的,因此在您的情况下,a 仅在第一个函数内定义。你可以让它全球化:

  await page.evaluate(() => { window.a = 10; console.log(a); });
  await page.evaluate(() => { console.log(a); });

或保存并从上下文转移到上下文:

  const a = await page.evaluate(() => { var a = 10; console.log(a); return a; });
  await page.evaluate((a) => { console.log(a); }, a);

【讨论】:

  • 非常感谢!第一个解决方案效果很好!
猜你喜欢
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 2021-06-28
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多