伪造者页面评估使用页面评估中的必需模块

问题描述 投票:0回答:1

我不了解如何在page.evaluate中使用模块,我也在SO上找到此帖子:How to pass required module object to puppeteer page.evaluate SO

但是我不知道如何使用它,我有:

await page.addScriptTag({ path: './node_modules/fs.realpath/index.js'});

我有:

错误:评估失败:TypeError:fs.​​appendFileSync不是函数

const fs = require('fs');

page.evaluate(()=>{
        let elements = document.querySelectorAll("a.myclass.vid");

        elements.forEach((element, index) => {
            fs.appendFileSync("textresult.txt", element.textContent+"\r\n");
        })

    });

感谢您的阐述:o)

node.js module puppeteer require
1个回答
0
投票

您传递给page.evaluate()的匿名函数在运行伪造者网页的上下文中运行,因此,它当然不知道fs是什么。您需要从该匿名函数返回一些内容,然后使用以下命令调用fs.appendFileSync

const texts = await page.evaluate(() => {
  return document.querySelectorAll('a.myclass.vid').map((el) => {
    return el.textContent + "\r\n"
  })
})

fs.appendFileSync('textresult.txt', texts)
© www.soinside.com 2019 - 2024. All rights reserved.