Heroku上Puppeteer指定Chromium可执行路径问题求助
在Heroku上为Puppeteer指定Chromium可执行路径的方法
核心解决逻辑
你安装的Heroku Puppeteer buildpack已经把Chromium固定部署到了特定路径,无需手动找位置,直接用环境变量或固定路径配置即可。
具体实现步骤
1. 优先用环境变量读取路径
buildpack会自动设置PUPPETEER_EXECUTABLE_PATH环境变量,直接在代码里调用就行,这是最稳妥的方式:
const puppeteer = require('puppeteer-core'); (async () => { const browser = await puppeteer.launch({ executablePath: process.env.PUPPETEER_EXECUTABLE_PATH, // 必须加这些启动参数,Heroku容器没有沙箱权限,不加会启动失败 args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage' ] }); // 你的业务代码逻辑 await browser.close(); })();
2. 手动指定固定路径(备用方案)
如果环境变量没生效,buildpack默认把Chromium安装在/app/.apt/usr/bin/google-chrome,直接写这个路径也能生效:
executablePath: '/app/.apt/usr/bin/google-chrome'
3. 确认依赖配置
确保你的package.json里安装的是puppeteer-core而非全量puppeteer(因为buildpack已经提供了Chromium,全量包会重复安装导致冲突),依赖配置示例:
{ "dependencies": { "puppeteer-core": "^21.0.0" } }
额外提醒
- 每次修改配置后,记得重新推送代码到Heroku,确保新配置生效
- 如果还是启动失败,检查Heroku控制台的日志,排查是否有其他权限或依赖问题
内容的提问来源于stack exchange,提问作者dimmy
相关产品推荐
相关产品推荐

