Target.createTarget timed out. Increase the 'protocolTimeout' – Node.js

by
Ali Hasan
node.js puppeteer

Quick Fix: Ensure that headless: "new" is not used as it may cause errors on the Render server, even if it works locally.

The Problem:

When deploying a server on Render, a ‘Target.createTarget timed out’ error is encountered, despite increasing the ‘protocolTimeout’. The error occurs during the launch of the puppeteer browser.

The Solutions:

Solution 1: Remove `headless: ‘new’`

The error occurs due to the use of the `headless: ‘new’` option in the `puppeteer.launch()` configuration. This option, which is intended for headless Chrome usage, is not compatible with the Render server environment.

To resolve this issue, remove the headless: 'new' option from the puppeteer.launch() configuration. This will allow Puppeteer to use the default headless mode, which is compatible with Render.

The revised puppeteer.launch() configuration should look like this:

const browser = await puppeteer.launch({
  headless: false, // Remove the 'new' option
  args: [
    "--disable-setuid-sandbox",
    "--no-sandbox",
    "--single-process",
    "--no-zygote",
  ],
  protocolTimeout: 240000, // 60 seconds
  executablePath:
    process.env.NODE_ENV === "production"
      ? process.env.PUPPETEER_EXECUTABLE_PATH
      : puppeteer.executablePath(),
});

Q&A

How does headless:"new" running on Render server cause errors even-though it works fine locally?

The headless:"new" option can cause errors on Render server due to compatibility issues. It’s recommended to use headless:false instead.

Video Explanation:

The following video, titled "How do I troubleshoot and fix failing health checks for Application ...", provides additional insights and in-depth exploration related to the topics discussed in this post.

Play video

... Target.ResponseCodeMismatch' error 2:49 Troubleshooting the 'Target.Timeout - Request timed out' error 5:23 Troubleshooting the 'Target ...