page.goto冻结某些网站的Google Cloud Functions

时间:2019-03-23 21:49:54

标签: firebase google-cloud-functions chromium puppeteer

我正在使用:

Puppeteer version: 1.13.0
Platform / OS version: Google Cloud
Node.js version: 8
当我将其部署到Google Cloud功能上时,

await.page.goto("https://somewebsite.com")会冻结。

我收到超时错误。 Navigation Timeout Exceeded

    const browser = await puppeteer.launch({
      headless: true,
      ignoreHTTPSErrors: true,
      args: [
        '--disable-gpu',
        '--disable-dev-shm-usage',
        '--disable-setuid-sandbox',
        '--no-first-run',
        '--no-sandbox',
        '--no-zygote',
        '--single-process', // <- this one doesn't works in Windows
      ]
    });

    const page = await browser.newPage();

    try {
      await page.goto('https://somewebsite.com',
                      { waitUntil: 'networkidle2' });
    } catch (error) {
      console.log('page.goto ERROR: ', error);
    }

我可以看到它在不同的环境中工作:

  • AWS
  • 本地

它适用于除 Google云功能以外的所有功能。但是,如果我尝试google.com可以。

问题在于该错误根本没有帮助,page.goto只是超时。

我想知道是否有适当的方法来调试它?

可能是操作系统问题吗? 但是话又说回来,AWS和Google云都基于Linux?

1 个答案:

答案 0 :(得分:1)

显然,Puppeteer 1.13.0版中的计时存在问题。尝试降级到1.11.0,它应该可以正常工作。

this Stackoverflow question中回答了类似的问题。它指向this discussion