Node.js 导航超时后关闭浏览器

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

下面的代码是由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.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
函数