这真的让我知道。我无法访问 $$ eval()内部的全局变量,也无法访问其他模块。
const util = require('util');
GlobalFlag=true;
.......
await page.$$eval(selector, (e) => {
console.log(e);
GlobalFlag=false;
console.log(util.inspect(e));
});
给我错误:评估失败:ReferenceError:未定义实用程序
答案 0 :(得分:1)
$eval
在客户端上下文中评估功能。它被字符串化并用eval
调用。它无权访问节点GlobalFlag
,因为它在浏览器全局范围中不存在。
$eval
和$$eval
support additional arguments,如果应该在其中读取变量,它们将传递给评估函数。为了写入变量,应从函数中返回值并在Node上下文中进行分配。
GlobalFlag = await page.$$eval(selector, (e) => {
console.log(JSON.stringify(e, null, 2));
return false;
});