以下代码抛出错误,为什么?
超出导航超时:超出 60000 毫秒
我正在使用木偶师版本 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 是否有任何特别之处?
如果您更改等待截止日期:"networkidle2" 。没有超时。
Networkidle2 - 当没有导航时,考虑完成导航 超过 2 个网络连接,至少 500 毫秒。
正如埃雷兹的回答中所指出的."服务工作者"可能正在保持连接。您可以通过转到 chrome://serviceworker-internals/.或开发工具 -> 应用程序选项卡 - 服务管理员
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}
引用:
使用networkidle0
时Navigation Timeout Exceeded
,并且无法深入了解超时的内容
支持服务工作者 #2634
删除waitUntil: "networkidle0"
有效,所以我假设该站点仍然与服务器保持连接。
我无法使用开发人员工具(通过运行await puppeteer.launch({ headless: false })
在非无头模式下访问(弄清楚它是哪个连接(也许是服务工作者?