为什么 puppeteer page.goto() 会抛出超时错误?



以下代码抛出错误,为什么?

超出

导航超时:超出 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}

引用:

使用networkidle0Navigation Timeout Exceeded,并且无法深入了解超时的内容

支持服务工作者 #2634

删除waitUntil: "networkidle0"有效,所以我假设该站点仍然与服务器保持连接。

我无法使用开发人员工具(通过运行await puppeteer.launch({ headless: false })在非无头模式下访问(弄清楚它是哪个连接(也许是服务工作者?

相关内容

  • 没有找到相关文章

最新更新