Puppeteer部署到Elastic Beanstalk时启动浏览器失败求助
解决Elastic Beanstalk上Puppeteer启动浏览器失败的问题
核心问题分析
错误*spawn /usr/bin/google-chrome-stable ENOENT*说明服务器上找不到指定路径的Chrome/Chromium可执行文件——哪怕你代码里写的是/usr/bin/chromium,要么是实际路径不符,要么是服务器根本没安装Chromium。
具体解决步骤
1. 确认并安装服务器上的Chromium
登录Elastic Beanstalk实例,先执行命令查找是否已安装Chromium:
which chromium-browser which chromium which chrome
如果没有输出,说明未安装,以Amazon Linux 2为例,执行以下命令安装:
sudo amazon-linux-extras install epel -y sudo yum install chromium -y
安装完成后再次用which命令确认实际路径,比如常见的/usr/bin/chromium-browser。
2. 修正代码中的配置
- 把
executablePath改成实际查到的路径; - 注意你代码里的
IgnoreHTTPSErrors是错误写法,Puppeteer配置项为驼峰式小写开头,应改为ignoreHTTPSErrors,否则该配置不生效。
修正后的代码示例:
const browser = await puppeteer.launch({ headless: true, executablePath: '/usr/bin/chromium-browser', // 替换为实际查到的路径 ignoreHTTPSErrors: true, args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu", "--ignore-certificate-errors"], });
3. 配置Elastic Beanstalk自动安装Chromium
为了避免每次部署都手动操作,在项目根目录创建.ebextensions/install-chromium.config文件,内容如下:
packages: yum: chromium: [] commands: 01_set_exec_permission: command: "chmod +x /usr/bin/chromium-browser"
这个配置会在环境部署时自动安装Chromium并赋予执行权限。
4. 验证版本兼容性
确保Puppeteer版本与服务器上的Chromium版本兼容,可在本地执行puppeteer --version查看对应的Chromium版本,再在服务器上安装匹配的版本,避免因版本不匹配导致启动失败。
内容的提问来源于stack exchange,提问作者Rabeen
相关产品推荐
相关产品推荐

