无法在第二个 page.evaluate 中访问第一个 page.evaluate 中定义的变量(node.js puppeteer)
Cannot access in the second page.evaluate a variable defined in the first page.evaluate (node.js puppeteer)
await page.evaluate(() => {var a = 10; console.log(a);});
await page.evaluate(() => {console.log(a);});
第二个报错:
Evaluation failed: ReferenceError: a is not defined
这两个调用似乎在 2 个不同的浏览器上下文中有效?
此外,我无法在浏览器的控制台中访问此变量,但浏览器的日志显示:
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);
await page.evaluate(() => {var a = 10; console.log(a);});
await page.evaluate(() => {console.log(a);});
第二个报错:
Evaluation failed: ReferenceError: a is not defined
这两个调用似乎在 2 个不同的浏览器上下文中有效?
此外,我无法在浏览器的控制台中访问此变量,但浏览器的日志显示:
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);