Node.js puppeteer - How to set navigation timeout?

Javascriptnode.jsPuppeteer

Javascript Problem Overview


I'm using node.js and puppeteer to get some data. Some of the files I'm opening are quite large ... and then I get an error:

Error:

our error { TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
    at Promise.then (/project/node_modules/puppeteer/lib/NavigatorWatcher.js:74:21)
    at <anonymous> name: 'TimeoutError' }

How can I ignore it or set a higher timeout?

That's my script:

await page.goto('url'+tableCell04Val, {waitUntil: 'load'});

Javascript Solutions


Solution 1 - Javascript

You can use timeout: 0 to disable timeout errors if you're loading a heavy page.

Use it in your page.goto like:

await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 0});

You can see the PR made to Pupeteer here which added the change, along with documentation and the unit tests that implement it.

Solution 2 - Javascript

#UPDATE 2019

You can also change the page behaviour since V1.0.0:

page.setDefaultNavigationTimeout(0); 

The param is the timeout in milliseconds.

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

https://pptr.dev/#?product=Puppeteer&show=api-pagesetdefaultnavigationtimeouttimeout

Solution 3 - Javascript

There are two methods to handle the timeouts in Puppeteer:

a) page.setDefaultNavigationTimeout(timeoutInMiliseconds)

It affects the navigation-related functions:

•	page.goBack([options])
•	page.goForward([options])
•	page.goto(url[, options])
•	page.reload([options])
•	page.setContent(html[, options])
•	page.waitForNavigation([options])

b) page.setDefaultTimeout(timeoutInMiliseconds)

It affects all the previous navigation functions plus all the Waiting funtions:

•	page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
•	page.waitForFunction(pageFunction[, options[, ...args]])
•	page.waitForRequest(urlOrPredicate[, options])
•	page.waitForResponse(urlOrPredicate[, options])
•	page.waitForSelector(selector[, options])
•	page.waitForXPath(xpath[, options])

NOTE: page.setDefaultNavigationTimeout takes priority over page.setDefaultTimeout

Solution 4 - Javascript

You can set timeout like this

await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 10000}).then(() => {
    console.log('success')
}).catch((res) => {
    console.log('fails', res)
})

Solution 5 - Javascript

await page.goto('url'+tableCell04Val, {  waitUntil: 'networkidle2',timeout: 0});

> networkidle2 comes handy for pages that do long-polling or any other side activity.

Check https://github.com/puppeteer/puppeteer/issues/1552#issuecomment-350954419

Solution 6 - Javascript

The default in puppeteer timeout is 30 seconds. To use custom timeouts, you can use the setDefaultNavigationTimeout and setDefaultTimeout methods or the timeout property in the options parameter. The wait time in all cases is specified in milliseconds.

await page.setDefaultNavigationTimeout(60000);

e.g.

const page = await browser.newPage();            
await page.setDefaultNavigationTimeout(60000); //timeout 60 seconds now

Pass 0 to disable the timeout

await page.setDefaultNavigationTimeout(0); 

Solution 7 - Javascript

I got same error but not on directly using node.js application. I faced this issue when I was using MagePack installed on the Ubuntu server.

I fixed it by increasing the timeout in the following file /ur/local/lib/node_modules/magepack/node_modules/puppeteer/libTimeoutSettings.js

const DEFAULT_TIMEOUT = 30000

Note: It may not be perfect solution but it worked for me and fixed the issue which I was facing.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPhilipp MView Question on Stackoverflow
Solution 1 - JavascriptJames GouldView Answer on Stackoverflow
Solution 2 - JavascriptJuanmabs22View Answer on Stackoverflow
Solution 3 - JavascriptJuanma MenendezView Answer on Stackoverflow
Solution 4 - JavascriptHenryView Answer on Stackoverflow
Solution 5 - JavascriptRexbenView Answer on Stackoverflow
Solution 6 - Javascriptuser14913615View Answer on Stackoverflow
Solution 7 - JavascriptMukeshView Answer on Stackoverflow