以下是我的node 8.12.0
应用程序中的代码片段:
var browser, page;
//launch browser
(async () => {
browser = await puppeteer.launch({headless: false});
page = await browser.newPage();
})();
//start cron job
cron.schedule('* * * * *', () => {
(async () => {
await page.goto('https://www.mysitedotcom/admin/'); <== cause error
//doing something with web page and db
........
)}();
}); // cron.schedule
(async() => {
browser.close();
})();
cron
作业每分钟启动一次。上面的网页没有打开(goto
不工作(,错误如下:
(node:3232) UnhandledPromiseRejectionWarning: Error: Navigation failed because browser has disconnected!
at Connection.NavigatorWatcher._eventListeners.helper.addEventListener (C:dcodejswbotnode_modulespuppeteerlibFrameManager.js:1146:117)
browser & page
的启动被故意排除在cron.schedule
之外,因此只要会话有效,browser
的一次创建将适用于cron.schedule
。但问题是,当browser
到达cron.schedule
时,它不知何故是disconnected
。我不明白为什么。我在这里缺少什么?
由于异步性质这些行几乎立即关闭浏览器。如果需要保持浏览器打开,请将它们删除或移动到其他位置。
(async() => {
browser.close();
})();
你最后尝试过await browser.close();
吗?
这将等待浏览器完全关闭。