Puppeteer Cluster Unable to get browser page

352 views Asked by At

I'm trying to run the puppeteer cluster docs example but it keeps giving me "Error: Unable to get browser page".

This is the debugging log:

  puppeteer-cluster: Cluster Launching +0ms
  puppeteer-cluster: Worker Starting #0 +0ms
  puppeteer-cluster: Worker Error getting browser page (try: 0), message: this.browser.createIncognitoBrowserContext is not a function +16ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +0ms
  puppeteer-cluster: SingleBrowserImpl Starting repair +0ms
  puppeteer-cluster: Worker Starting #1 +1ms
  puppeteer-cluster: Worker Error getting browser page (try: 0), message: this.browser.createIncognitoBrowserContext is not a function +330ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +331ms
  puppeteer-cluster: SingleBrowserImpl Starting repair +0ms
  puppeteer-cluster: Worker Error getting browser page (try: 1), message: this.browser.createIncognitoBrowserContext is not a function +1ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +1ms
  puppeteer-cluster: Worker Error getting browser page (try: 1), message: this.browser.createIncognitoBrowserContext is not a function +302ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +302ms
  puppeteer-cluster: SingleBrowserImpl Starting repair +0ms
  puppeteer-cluster: Worker Error getting browser page (try: 2), message: this.browser.createIncognitoBrowserContext is not a function +1ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +1ms
  puppeteer-cluster: Worker Error getting browser page (try: 2), message: this.browser.createIncognitoBrowserContext is not a function +316ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +316ms
  puppeteer-cluster: SingleBrowserImpl Starting repair +0ms
  puppeteer-cluster: Worker Error getting browser page (try: 3), message: this.browser.createIncognitoBrowserContext is not a function +1ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +1ms
  puppeteer-cluster: Worker Error getting browser page (try: 3), message: this.browser.createIncognitoBrowserContext is not a function +312ms
  puppeteer-cluster: SingleBrowserImpl Repair requested +312ms
  puppeteer-cluster: SingleBrowserImpl Starting repair +0ms

This is until try 9.

Run with Node.js v20.10.0

Edit:

Since it seems like more than one person can't read the first sentence I wrote, here's the code:

const { Cluster } = require('puppeteer-cluster');

(async () => {
  const cluster = await Cluster.launch({
    concurrency: Cluster.CONCURRENCY_CONTEXT,
    maxConcurrency: 2,
  });

  await cluster.task(async ({ page, data: url }) => {
    await page.goto(url);
    const screen = await page.screenshot();
    // Store screenshot, do something else
  });

  cluster.queue('http://www.google.com/');
  cluster.queue('http://www.wikipedia.org/');
  // many more pages

  await cluster.idle();
  await cluster.close();
})();
2

There are 2 answers

0
APN Carmine On BEST ANSWER

The latest version of the puppeteer-cluster package (v0.23.0) does not support the latest version of the puppeteer package (v22.0.0) due to breaking changes.
As you can see, the browser context has been renamed in the latest version of the puppeteer package:

https://github.com/puppeteer/puppeteer/issues/11834

To solve, until the puppeteer-cluster package is updated, I recommend using an older version of the puppeteer package ( <= v21.11.0):

npm install [email protected]

OR

yarn add [email protected]
0
X0R On

The puppeteer package introduced breaking changes and the puppeteer cluster hasn't been updated to reflect those changes. npm install the puppeteer package and go into the following files in your project folder:

node_modules\puppeteer-cluster\dist\concurrency\built-in\Context.js

and

node_modules\puppeteer-cluster\dist\concurrency\built-in\Browser.js

in both of those files change all instances of createIncognitoBrowserContext() to createBrowserContext()

after that you should be good to go and the puppeteer cluster package should work again!