首页 > 解决方案 > 导入的函数在 puppeteer 中不起作用

问题描述

从不同的文件导入长 JS 函数:

let startTheShow = require('./scraper.js');

然后尝试在页面上使用该功能。

await page.evaluate(() => {

    startTheShow('info','hi','hi');


})

预期的结果是什么? 导入的函数会在页面上运行

相反会发生什么? “未定义 startTheShow”

将原始脚本放在评估中而不是将模块导入索引,可以解决问题。不幸的是,这个选项在索引文件中造成了很多混乱。知道为什么我不能使用这个导入的函数吗?

标签: javascriptnode.jsweb-scrapingautomationpuppeteer

解决方案


文档

pageFunction<function|string>要在页面上下文中评估的函数

evaluate(() => startTheShow())意味着页面上下文中应该有一个startTheShow函数,我假设没有,页面上下文不知道是什么startTheShow。您应该传递 的字符串版本./scraper.jsstartTheShow要评估的函数。

从文档传递字符串的示例:

console.log(await page.evaluate('1 + 2')); // prints "3"

推荐阅读