打开URL时,Puppetter超时

时间:2018-06-04 22:57:30

标签: javascript node.js puppeteer

背景

我在本地运行Puppeteer工作正常。当我将它移动到生产的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 个答案:

答案 0 :(得分:1)

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