在使用Puppeteer库时,如果你遇到错误信息“The 'original' argument must be of type function”,这通常意味着你在尝试使用page.exposeFunction
方法时传递了一个非函数类型的参数。
page.exposeFunction
是Puppeteer提供的一个方法,它允许你在浏览器上下文中暴露一个Node.js函数,使其可以在页面的JavaScript环境中被调用。
错误信息表明你传递给page.exposeFunction
的第一个参数(即函数名)不是一个函数。这个参数应该是一个字符串,代表你在页面JavaScript中调用的函数名,而第二个参数应该是一个实际的函数,这个函数将在Node.js环境中执行。
确保你传递给page.exposeFunction
的第一个参数是一个字符串,第二个参数是一个函数。下面是一个正确的使用示例:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 正确的使用方式
await page.exposeFunction('myFunction', async (param) => {
console.log('This function was called with:', param);
return 'Hello from Node.js!';
});
// 在页面中调用暴露的函数
const result = await page.evaluate(async () => {
return await window.myFunction('test parameter');
});
console.log(result); // 输出: Hello from Node.js!
await browser.close();
})();
在这个例子中,myFunction
是在Node.js环境中定义的函数,它被暴露给了浏览器环境,并且可以在页面的JavaScript代码中被调用。
这种功能在需要浏览器和Node.js环境之间进行交互时非常有用。例如,你可能需要在浏览器中执行一些操作,然后将结果传递回Node.js进行进一步处理。
确保你遵循上述结构和类型,这样就可以避免“The 'original' argument must be of type function”的错误。
领取专属 10元无门槛券
手把手带您无忧上云