javascript - 如何将数组和函数传递给 Page.evaluate
问题描述
我遇到了多个错误,page.evaluate
我不明白为什么。
ReferenceError: alljobs 未定义
和
评估失败:ReferenceError:multiplePositionsPerJob 未定义
alljobs
是我试图将对象推送到的数组。
multiplePositionsPerJob
是我require
在文件中引用的函数。
var alljobs = [];
await page.evaluate(() => {
Array.from(
document.querySelectorAll(
"section"
)
).map(job => {
console.log(job);
if (job.querySelector("ul li")) {
multiplePositionsPerJob(job).forEach(position => {
alljobs.push(position);
});
}
});
}, alljobs);
解决方案
要传递数组或函数之类的参数,您的代码应该是这样的。
var alljobs = [];
var allFuncts = require("./functionsfile");
var multiplePositionsPerJob = allFuncts.multiplePositionsPerJob;
await page.evaluate( (alljobs, multiplePositionsPerJob) => {
Array.from( document.querySelectorAll('section') ).map(job => {
console.log(job);
if ( job.querySelector("ul li") ) {
multiplePositionsPerJob(job).forEach(position => {
alljobs.push(position);
});
}
});
}, alljobs, multiplePositionsPerJob);
推荐阅读
- datetime - 对同一数据有多个特征是不好的做法(例如同时使用序数和二值化时间序列数据)?
- laravel - Laravel - 相关模型中的唯一用户列表
- angularjs - 带有 Workbox ServiceWorker 的离线 html5 模式 AngularJS
- javascript - 将 AJAX 提交到 PHP 后清除输入字段
- c# - 可以从代码隐藏全局访问任何 XAML 窗口对象吗?
- php - PHP 忽略 PATH 中的一些目录
- android - Android - 通过 Intent 传递 Activity 对象
- html - 创建 ::after 伪元素导致背面可见性问题
- android - Android Oreo 前台服务在打盹模式下不起作用
- mysql - 为什么在使用 mysql server 5.7.22 时 EXCEPT 对我的查询不起作用?