首页 > 解决方案 > 如何将数组和函数传递给 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);

标签: javascriptpuppeteer

解决方案


要传递数组或函数之类的参数,您的代码应该是这样的。

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);

推荐阅读