Hi Render Community,
I’m experiencing an issue while trying to deploy a Node.js application that uses Puppeteer on Render. Despite several attempts and troubleshooting steps, I keep encountering the following error when launching Puppeteer:
Error during Puppeteer usage: Error: Browser was not found at the configured executablePath (/opt/render/.cache/puppeteer/chrome)
at ChromeLauncher.launch (/opt/render/project/src/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserLauncher.js:76:19)
...
Context:
- Hosting Platform: Render.com
- Use Case: I am using Puppeteer to perform basic web page analysis, such as visiting
https://www.google.com
and printing the page title. - Puppeteer Versions Tried: I’ve tried both the latest version (
^21.0.0
) and an older version (19.7.5
). - Goal: To verify if Puppeteer is installed correctly and runs in the Render hosting environment.
Sample Code:
Here is the sample script (test.js
) I am using to verify Puppeteer functionality:
// Import Puppeteer
const puppeteer = require('puppeteer');
// Main function to test Puppeteer
async function testPuppeteer() {
try {
// Launch the browser in headless mode with necessary options
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
// Create a new page in the browser
const page = await browser.newPage();
// Navigate to an example page
await page.goto('https://www.google.com');
// Get the page title
const title = await page.title();
console.log(`Page title (Google): ${title}`);
// Close the browser
await browser.close();
console.log('Puppeteer is working correctly!');
} catch (error) {
// Handle errors if Puppeteer doesn't work correctly
console.error('Error during Puppeteer usage:', error);
}
}
// Run the test function
testPuppeteer();
Troubleshooting Steps Taken:
- Removed the
executablePath
Option: I tried removing theexecutablePath
to let Puppeteer automatically locate Chromium. - Tested Different Versions of Puppeteer: I tested with both the latest version (
^21.0.0
) and19.7.5
. - Postinstall Script in
package.json
: I added"postinstall": "npx puppeteer install"
to ensure that Chromium gets installed during the Render build. - Environment Variable CHROME_BIN: Set
CHROME_BIN
to/opt/render/.cache/puppeteer/chrome
as suggested in various discussions, but the issue persists.
Environment Details:
- Node.js Version:
v20.15.1
Problem Description:
Despite following all these steps, the error persists, indicating that Chromium is not being found at the expected path. It appears that Puppeteer is unable to locate or properly install the browser on Render.com.
Questions:
- Has anyone else experienced similar issues with deploying Puppeteer on Render?
- Is there something specific I need to do to make sure Puppeteer can find Chromium in a containerized environment like this?
- Are there best practices or configurations I may be missing to ensure Puppeteer works on a server environment with restricted installation permissions?
package.json
File:
{
"name": "wcag-web-analyzer",
"version": "1.0.0",
"scripts": {
"start": "node server.js",
"postinstall": "npx puppeteer install"
},
"dependencies": {
"express": "^4.18.2",
"axios": "^1.3.0",
"puppeteer": "^21.0.0",
"axe-core": "^4.5.4"
}
}
Thank You!
I appreciate any help or guidance you can provide. I just need to verify if and how Puppeteer can run successfully on Render so I can continue developing the project.
Thanks in advance!