puppeteer 加载网页失败 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aglsv
V2EX    Node.js

puppeteer 加载网页失败

  •  
  •   aglsv 2021-12-22 18:35:59 +08:00 6720 次点击
    这是一个创建于 1463 天前的主题,其中的信息可能已经有所发展或是发生改变。
    开始打开网页 2021-12-22T09:32:19.799Z [verbose] 访问 url 次数 1 2021-12-22T09:32:32.340Z [verbose] 标签页 3 2021-12-22T09:33:09.763Z [verbose] 浏览器错误 { Error: Protocol error (Runtime.callFunctionOn): Target closed. at Promise (/code/node_modules/puppeteer/lib/Connection.js:183:56) at Promise (null:null:null) at send (/code/node_modules/puppeteer/lib/Connection.js:182:12) at _evaluateInternal (/code/node_modules/puppeteer/lib/ExecutionContext.js:107:44) at evaluateHandle (/code/node_modules/puppeteer/lib/ExecutionContext.js:57:17) at (/code/node_modules/puppeteer/lib/helper.js:112:23) at rerun (/code/node_modules/puppeteer/lib/DOMWorld.js:570:65) at _tickCallback (internal/process/next_tick.js:68:7) message: 'Protocol error (Runtime.callFunctionOn): Target closed.' } 2021-12-22T09:33:09.764Z [error] (node:23) UnhandledPromiseRejectionWarning: Error: Protocol error (Network.getCookies): Session closed. Most likely the page has been closed. at send (/code/node_modules/puppeteer/lib/Connection.js:180:29) at cookies (/code/node_modules/puppeteer/lib/Page.js:382:32) at (/code/node_modules/puppeteer/lib/helper.js:112:23) at Promise (/code/aicard-event.js:367:28) 2021-12-22T09:33:09.764Z [error] (node:23) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2) 2021-12-22T09:33:09.764Z [error] (node:23) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. FC Invoke End RequestId: , Error: Function timed out after 120 seconds (maxMemoryUsage: 0MB) 

    我这块在第一次打开页面的时候waitForFunction报错提示超时,于是我会再重试一次,这个时候waitForFunction就会报Protocol error (Runtime.callFunctionOn): Target closed.,这个问题我十次里面会遇到一两次,想问问这个是为啥啊,我中间 url 啥的都没改,就只是重新再 page.goto 一次,为什么会提示这个错误呢。

    还有一个问题,这个是我这个方法的结构,我上面waitForFunction报错之后进入 catch ,在这里面获取 cookie ,但是目标关闭导致失败,这个时候什么会提示后面的错误,我想问问我这个不是写了 reject 吗,完了在调用toPDF时也写了.then().catch(),请问这个正确的写法该是怎样的呢

    function toPDF() { return new Promise((resolve, reject) => { for (let i = 0; i < 2; i++) { try { //打开页面生成 pdf resolve() } catch (e) { // 获取 cookie } } reject(error) }) } 
    5 条回复    2021-12-23 11:52:48 +08:00
    v2byy
        1
    v2byy  
       2021-12-22 22:22:50 +08:00
    1. target.close 一般是页面已经关闭,比如 page.close.

    page.goto 可以指定 waitUntil 参数,为啥非要用 waitForFunction? 如果具体像知道什么错误,可以给 puppeteer 传递 headless 为 false ,可以看到 UI 。

    2. 看起来像是在 catch 里面又抛出了异常,但是应该可以在 toPdf().then().catch(), 在 catch 到吧

    具体可以用 vscode debug 一下啊
    aglsv
        2
    aglsv  
    OP
       2021-12-23 10:07:54 +08:00 via Android
    @v2byy 用 webstorm 看了没问题写法没啥问题,没搞懂为啥。waitUntil 我设置了,用 wiaiForFunction 是为了等待 window.status 为 load ,只是设置网络请求完成的话有可能页面还没渲染完,pqge.close 只在 waitfoefunction 成功后判断有无错误,在 page.pdf 后才会关闭,但是现在第一次超时了并没有走到那一步。
    aglsv
        3
    aglsv  
    OP
       2021-12-23 10:11:40 +08:00
    @v2byy 只用 waitUntil 设置为 load 的话还要写一个计时器来判断是否超时,所以我直接用了 waitForFunction 来设置
    v2byy
        4
    v2byy  
       2021-12-23 11:11:18 +08:00
    @aglsv page.goto 支持设置 timeout 参数啊
    aglsv
        5
    aglsv  
    OP
       2021-12-23 11:52:48 +08:00
    @v2byy 他那个不是跳转等待时间吗,我还以为是跳转到这个链接需要等待的时间
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1646 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:19 PVG 00:19 LAX 08:19 JFK 11:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86