Chrome puppeteer 在错误事件上关闭页面

Mus*_*ğlu 5 puppeteer

我想在 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();
})();
Run Code Online (Sandbox Code Playgroud)

Md.*_*her 6

puppeteer repo 上有一个与此相关的问题/PR,这在类似情况下会有所帮助。

\n\n

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

\n\n

同时,你可以尝试这个小技巧,如果 PR 在 0.12+ 版本上有,我们就不必担心下面的代码。

\n\n
(async() => {\n  const browser = await puppeteer.launch({headless: false});\n  const page = await browser.newPage();\n\n    function handleClose(msg){\n        console.log(msg);\n        page.close();\n        browser.close();\n        process.exit(1);\n    }\n\n    process.on("uncaughtException", () => {\n        handleClose(`I crashed`);\n    });\n\n    process.on("unhandledRejection", () => {\n        handleClose(`I was rejected`);\n    });\n\n    await page.goto("chrome://crash");\n\n})();\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将输出类似下面的内容,

\n\n
\xe2\x96\xb6 node app/app.js\nI was rejected\n
Run Code Online (Sandbox Code Playgroud)\n