5

当 puppeteer 遇到任何错误时,我想关闭页面,有时页面我尝试加载崩溃的页面并且它不调用 .close();

(async () => {
const page = await browser.newPage();
await page.setViewport({width: resWidth, height: resHeight});
await page.goto(d["entities"]["urls"][0]["expanded_url"], {timeout :90000});
await page.screenshot({path: './resimdata/'+d['id']+'.png' ,fullPage: true});
await page.close();
})();
4

1 回答 1

6

puppeteer repo 上有一个关于此的问题/公关,这将在类似情况下有所帮助。

相关问题链接:https ://github.com/GoogleChrome/puppeteer/issues/952

同时,你可以试试这个小技巧,如果 PR 是 0.12+ 版本,我们就不用担心下面的代码了。

(async() => {
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();

    function handleClose(msg){
        console.log(msg);
        page.close();
        browser.close();
        process.exit(1);
    }

    process.on("uncaughtException", () => {
        handleClose(`I crashed`);
    });

    process.on("unhandledRejection", () => {
        handleClose(`I was rejected`);
    });

    await page.goto("chrome://crash");

})();

这将输出如下内容,

▶ node app/app.js
I was rejected
于 2017-10-11T08:54:23.400 回答