代码之家  ›  专栏  ›  技术社区  ›  wuno

打开url时puppeter超时

  •  0
  • wuno  · 技术社区  · 6 年前

    背景

    我在本地的应用程序中运行puppeter,运行得很好。当我将它移到生产debian服务器时,它会在

    page.goto(url) 功能。

    例子

    我在网上尝试了很多不同的建议。在下面的示例中,您将看到一些我在网上尝试过的选项。我已经试过所有这些单独和不同的组合。是的,我现在很绝望。

    const browser = await puppeteer.launch({
          args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--ignore-certificate-errors',
            '--ignore-certificate-errors-spki-list',
            '--user-data-dir']});
        const page = await browser.newPage();
        await page.goto(
          `https://example.com/${template}?data=${JSON.stringify(req.body)}`, {waitUntil: 'networkidle0'}
        );
    

    page.goto(url)在本地工作,但在服务器上运行时失败。

    问题

    为什么是 page.goto() 服务器出现故障,是否有解决办法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Simone Sanfratello    6 年前

    page.setDefaultNavigationTimeout 是你的选择

    const browser = await puppeteer.launch({
      args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--ignore-certificate-errors',
        '--ignore-certificate-errors-spki-list',
        '--user-data-dir']});
    
    const page = await browser.newPage();
    page.setDefaultNavigationTimeout(3600); // 1 hour
    await page.goto(
      `https://example.com/${template}?data=${JSON.stringify(req.body)}`, {waitUntil: 'networkidle2'}
    );
    

    参考 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagesetdefaultnavigationtimeouttimeout