node.js - Puppeteer 1.16.0 无法导航到 https://google.ca?
问题描述
运行npm audit fix
fto 修复漏洞后,pupetteer 不再能够导航到任何内容,甚至无法导航到 google。
npm list 说我使用的是 1.16.0。
在名为 的脚本中invoice_to_pdf.js
:
2 const puppeteer = require('puppeteer');
...
18 const headers = new Map();
...
31 console.log("Starting " + new Date());
32
33
34 (async () => {
35 const browser = await puppeteer.launch();
36 const page = await browser.newPage();
37 await page.setExtraHTTPHeaders(headers);
38 page.setDefaultNavigationTimeout(50000)
39
40 process.on("unhandledRejection", (reason, p) => {
41 console.error("Unhandled Rejection at: Promise", p, "reason:", reason);
42 browser.close();
43 process.exit(1)
44 });
45
46 url = 'https://google.ca'
47 console.log(`For testing, navigating to ${url}`);
48 await page.goto(url);
49 console.log(`Waiting for naviation to ${url}`);
50 await page.waitForNavigation({waitUntil: 'load'});
51 console.log(`Arrived at ${url}`);
52
输出是:
Starting Sun May 19 2019 22:23:18 GMT-0400 (EDT)
For testing, navigating to https://google.ca
Waiting for naviation to https://google.ca
Unhandled Rejection at: Promise Promise {
<rejected> { TimeoutError: Navigation Timeout Exceeded: 50000ms exceeded
at Promise.then (/home/jlam/code/sge/node_modules/puppeteer/lib/LifecycleWatcher.js:142:21)
at <anonymous>
-- ASYNC --
at Frame.<anonymous> (/home/jlam/code/sge/node_modules/puppeteer/lib/helper.js:110:27)
at Page.waitForNavigation (/home/jlam/code/sge/node_modules/puppeteer/lib/Page.js:649:49)
at Page.<anonymous> (/home/jlam/code/sge/node_modules/puppeteer/lib/helper.js:111:23)
at /home/jlam/code/sge/scripts/invoice_to_pdf.js:50:14
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7) name: 'TimeoutError' } } reason: { TimeoutError: Navigation Timeout Exceeded: 50000ms exceeded
at Promise.then (/home/jlam/code/sge/node_modules/puppeteer/lib/LifecycleWatcher.js:142:21)
at <anonymous>
-- ASYNC --
at Frame.<anonymous> (/home/jlam/code/sge/node_modules/puppeteer/lib/helper.js:110:27)
at Page.waitForNavigation (/home/jlam/code/sge/node_modules/puppeteer/lib/Page.js:649:49)
at Page.<anonymous> (/home/jlam/code/sge/node_modules/puppeteer/lib/helper.js:111:23)
at /home/jlam/code/sge/scripts/invoice_to_pdf.js:50:14
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7) name: 'TimeoutError' }
运行npm update
或npm upgrade
导致相同的结果。使用await page.waitForNavigation({waitUntil: 'domcontentloaded'});
andawait page.waitForNavigation({waitUntil: 'networkidle2'})
导致相同的结果。
Npm list 说我有
lusk 22:27:59 $ npm list
...@1.0.0 /home/jlam/code/...
+-+ cli-debugger@0.0.2
| +-- v8-debugger@0.0.3
+-- json-query@2.2.2
+-+ mkdirp@0.5.1
| +-- minimist@0.0.8
+-+ puppeteer@1.16.0
+-+ debug@4.1.1
| +-- ms@2.1.1
+-+ extract-zip@1.6.7
| +-+ concat-stream@1.6.2
| | +-- buffer-from@1.1.1
| | +-- inherits@2.0.3
| | +-+ readable-stream@2.3.6
| | | +-- core-util-is@1.0.2
| | | +-- inherits@2.0.3 deduped
| | | +-- isarray@1.0.0
| | | +-- process-nextick-args@2.0.0
| | | +-- safe-buffer@5.1.2
| | | +-+ string_decoder@1.1.1
| | | | +-- safe-buffer@5.1.2 deduped
| | | +-- util-deprecate@1.0.2
| | +-- typedarray@0.0.6
| +-+ debug@2.6.9
| | +-- ms@2.0.0
| +-- mkdirp@0.5.1 deduped
| +-+ yauzl@2.4.1
| +-+ fd-slicer@1.0.1
| +-- pend@1.2.0
+-+ https-proxy-agent@2.2.1
| +-+ agent-base@4.2.1
| | +-+ es6-promisify@5.0.0
| | +-- es6-promise@4.2.6
| +-+ debug@3.2.6
| +-- ms@2.1.1 deduped
+-- mime@2.4.3
+-- progress@2.0.3
+-- proxy-from-env@1.0.0
+-+ rimraf@2.6.3
| +-+ glob@7.1.4
| +-- fs.realpath@1.0.0
| +-+ inflight@1.0.6
| | +-- once@1.4.0 deduped
| | +-- wrappy@1.0.2
| +-- inherits@2.0.3 deduped
| +-+ minimatch@3.0.4
| | +-+ brace-expansion@1.1.11
| | +-- balanced-match@1.0.0
| | +-- concat-map@0.0.1
| +-+ once@1.4.0
| | +-- wrappy@1.0.2 deduped
| +-- path-is-absolute@1.0.1
+-+ ws@6.2.1
+-- async-limiter@1.0.0
谷歌从同一台机器上加载正常:
lusk 22:30:12 $ lynx --dump google.ca
Search [1]Images [2]Maps [3]Play [4]YouTube [5]News [6]Gmail [7]Drive
[8]More »
[9]Web History | [10]Settings | [11]Sign in
Google
_______________________________________________________
Google Search I'm Feeling Lucky [12]Advanced search
[13]Language tools
Google offered in: [14]Français
[15]Advertising Programs [16]Business Solutions [17]About
Google [18]Google.com
© 2019 - [19]Privacy - [20]Terms
解决方案
你能试一下吗:
await page.waitForNavigation({waitUntil: 'networkidle2'})
代替
await page.waitForNavigation({waitUntil: 'load'})
推荐阅读
- jquery - 将 html 日期输入值添加到 ajax 帖子
- javafx - 删除 JavaFX 中的可点击窗格(在控制器中)
- python - 使用 Xgboost 进行调优时出现 param_grid 错误
- javascript - 有没有更好的方法在 JavaScript 中对数组项进行部分求和?
- ios - 如何将 tableview 单元格计数值分配给编程 UILabel?
- multithreading - 在 S3 存储桶之间并行移动文件
- xamarin.forms - 错误 DB 锁定在 Android SQLite Xamarin 表单中
- c# - 将 Null 传递给 ActionResult 会导致错误,但逻辑似乎是正确的
- javascript - 如何排除对象的某些属性
- php - 保存时间戳和 IP 地址