You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2 ARM64(Amazon Linux 2)环境下Puppeteer安装失败求助

在AWS Beanstalk ARM64实例(Amazon Linux 2)上安装Puppeteer 19.2.2的解决方案

问题背景

在由Beanstalk管理的AWS EC2 ARM64实例(c7g.2xlarge机型,Amazon Linux 2系统,Node.js v14)中安装puppeteer ^19.2.2时,遇到两个核心问题:

  • 已设置PUPPETEER_SKIP_DOWNLOAD=TRUE,但安装过程仍自动尝试下载Chromium,最终因ARM64架构无对应二进制文件失败
  • 手动尝试安装Chromium的多种方式均未成功

尝试过的无效方案

  • 通过amazon-linux-extras安装Chromium:无对应ARM64仓库
  • 使用第三方脚本安装Chrome:不支持ARM64架构
  • 切换至x86实例类型:所在AWS区域不支持该类型实例
  • 编译Chromium:当前环境资源及复杂度不适用
  • 改用Firefox Nightly:运行失败

解决方案

Update 1:解决Puppeteer安装问题

将PUPPETEER_SKIP_DOWNLOAD配置移至项目根目录的.npmrc文件,并改为小写格式:

puppeteer_skip_download=true

此配置成功阻止了Puppeteer安装时的Chromium自动下载流程,完成了Puppeteer本身的安装,但Chromium仍无法手动部署。

Update 2:改用Firefox替代Chromium(最终可行方案)

通过以下步骤实现Firefox与Puppeteer的配合运行:

  1. 配置Beanstalk自动安装Firefox
    在项目根目录创建.ebextensions文件夹,新建puppeteer.config文件,内容如下:

    commands:
      install_firefox:
        command: sudo amazon-linux-extras install epel -y && sudo amazon-linux-extras install firefox
    

    该配置会在Beanstalk部署实例时自动完成Firefox的安装。

  2. 修改Puppeteer启动配置
    在代码中区分生产环境(Beanstalk)和本地开发环境,指定对应的浏览器可执行路径及产品类型:

    const puppeteer = require('puppeteer');
    
    const options = {
      headless: true,
    };
    
    if (process.env.NODE_ENV === 'production') {
      // Beanstalk生产环境配置
      options.executablePath = '/usr/bin/firefox';
      options.product = 'firefox';
    } else {
      // 本地Mac开发环境配置
      options.executablePath = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
    }
    
    const browser = await puppeteer.launch(options);
    
    // 后续Puppeteer业务代码
    
  3. 关键注意事项

    • 请勿使用await page.emulateMediaType('screen');,该方法在Firefox环境下会执行失败。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:55:40