如何将数组和函数传递给Page.evaluate

时间:2019-12-17 04:16:24

标签: javascript puppeteer

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

1 个答案:

答案 0 :(得分:1)

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

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