Puppeteer错误TypeError: browser.newPage is not a function处理
问题描述
测试puppeteer使用,错误代码如下。
(async () => {
console.log("puppeteer")
const browser = puppeteer.launch();
const page = await browser.newPage();
let ret = await page.evaluate('1 + 2')
browser.close();
console.log(ret)
})();
执行后产生异常
(node:47711) UnhandledPromiseRejectionWarning: TypeError: browser.newPage is not a function
查阅puppeteer手册,关于launch返回值定义。可以看到是一个异步方法。
puppeteer.launch([options])
returns: <Promise<Browser>> Promise which resolves
to browser instance
错误代码中调用launch立刻返回,browser并未指向任何实例。因此browser.newPage()方法爆出is not a function错误。在puppeteer.launch()前加上await问题解决。
(async () => {
console.log("puppeteer")
const browser = await puppeteer.launch();
const page = await browser.newPage();
let ret = await page.evaluate('1 + 2')
browser.close();
console.log(ret)
})();
总结
puppeteer中方法大多都是异步,这点一定要注意。
参考
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions