Javascript 自定义事件不是一个函数,木偶演员

Javascript 自定义事件不是一个函数,木偶演员,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我无法使用Puppeter执行自定义事件 这就是我的代码看起来的样子,但它似乎不起作用 const browser = await puppeteer.launch({ defaultViewport: { width: 1920, height: 1080 }, headless: false, }); const page = await browser.newPage(); await page.exposeFunction('getInfo', (even

我无法使用Puppeter执行自定义事件

这就是我的代码看起来的样子,但它似乎不起作用

const browser = await puppeteer.launch({
    defaultViewport: { width: 1920, height: 1080 },
    headless: false,
  });

  const page = await browser.newPage();

  await page.exposeFunction('getInfo', (event) => {
    console.log('getInfo');
  });

await page.goto('url');

  await page.evaluate(() => {
    window.document.getInfo(); // TypeError: window.document.getInfo is not a function
  });

我做错了什么?

文档上说:

该方法在页面的窗口对象上添加一个名为name的函数。调用时,该函数执行node.js中的puppeterfunction,并返回解析为puppeterfunction返回值的承诺

关键部分是“在页面的窗口对象上”。您正试图在
window.document
对象中查找函数

此代码将修复您的问题:

等待页面。评估(()=>{
getInfo();
});
还要注意,任何此类函数都会返回一个承诺,因此您可能需要执行以下操作:

wait page.evaluate(异步()=>{
等待window.getInfo();
});
如果您的函数应该返回您希望以后在
page.evaluate()中使用的内容,例如,回调函数