以下代码引发错误,为什么?
超过导航超时:超过60000ms
我正在使用puppeteer版本1.19.0
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCacheEnabled(false);
try {
const response = await page.goto("https://www.gatsbyjs.com", {
waitUntil: "networkidle0",
timeout: 60000
});
console.log("Status code:", response.status());
} catch (error) {
console.log(error.message);
}
await browser.close();
})();
某些其他URL可以正常工作,所以我想知道此特定URL是否有什么特别之处吗?
答案 0 :(得分:1)
删除waitUntil: "networkidle0"
是可行的,因此我假设该站点仍保持与服务器的连接。
我无法使用开发人员工具(可以通过运行await puppeteer.launch({ headless: false })
在非无头模式下访问)确定它是哪个连接(也许是服务工作者?)
答案 1 :(得分:1)
如果更改了waitUntil:“ networkidle2”。没有超时。
networkidle2-认为在没有导航时导航完成 至少500毫秒内超过2个网络连接。
正如Erez的回答所指出的。 'serviceworker'可能正在保持连接。您可以转到chrome:// serviceworker-internals /进行检查。或Devtools->“应用程序”标签-服务助手
Serive Worker: chrome://serviceworker-internals/
Scope: https://www.gatsbyjs.com/
Registration ID: 295
Navigation preload enabled: false
Navigation preload header length: 4
Active worker:
Installation Status: ACTIVATED
Running Status: RUNNING
Fetch handler existence: EXISTS
Script: https://www.gatsbyjs.com/sw.js
Version ID: 10330
Renderer process ID: 11892
Renderer thread ID: 18124
DevTools agent route ID: 8
From Network : installingWorker ServiceWorker {scriptURL: "https://www.gatsbyjs.com/sw.js", state: "installing", onerror: null, onstatechange: null}
参考文献:
Navigation Timeout Exceeded
when using networkidle0
and no insight into what timed out