Node.js 导航超时后关闭浏览器
下面的代码是由nodejs+Puppeter编写的,其目标是拍摄用户站点的屏幕截图:Node.js 导航超时后关闭浏览器,node.js,puppeteer,Node.js,Puppeteer,下面的代码是由nodejs+Puppeter编写的,其目标是拍摄用户站点的屏幕截图: const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('http://MY_WEBSITE/try/slowURL',{timeout: 30000, waitUntil: 'networkidle0' });//timeout 30 seconds await page.s
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://MY_WEBSITE/try/slowURL',{timeout: 30000, waitUntil: 'networkidle0' });//timeout 30 seconds
await page.setViewport({width: 1920, height: 1080});
await page.screenshot({path: pathUpload});
await browser.close();
它的操作非常简单,但为了测试超时,我创建了一个页面(http://MY_WEBSITE/try/slowURL
),加载需要200秒
根据木偶师超时(timeout:30000
),有100%的几率出现导航超时:30000ms超时错误,特别是因为我正在强制执行
问题
通过htop
命令(在linux中使用),即使系统崩溃并显示“TimeoutError”,我也可以看到浏览器尚未关闭
如果浏览器没有像扫描一样关闭,服务器很可能会耗尽内存,我不希望这样
如何解决此问题?您希望将代码封装到语句中以处理错误并关闭浏览器 代码示例
const browser=wait puppeter.launch();
试一试{
const page=wait browser.newPage();
等待page.goto(/*…*/);
//更多可能抛出的代码。。。
}捕捉(错误){
控制台错误('error',err.message);
}最后{
等待浏览器关闭();
}
主代码在try
块中执行。catch
块显示可能发生的任何类型的错误。finally
部分是脚本中始终执行的部分,而不仅仅是在抛出错误时执行。这样,无论是否发生错误,脚本都将调用浏览器.close
函数