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

AWS EC2上Node.js项目Puppeteer找不到Chrome报错求助

解决AWS EC2上Puppeteer无法找到Chrome的问题

问题重现

在AWS EC2的Node.js项目中调用Puppeteer转换HTML为PDF时,出现以下错误:

error: Could not find Chrome (ver. 113.0.5672.63). This can occur if either

you did not perform an installation before running the script (e.g. npm install) or
your cache path is incorrectly configured (which is: /root/.cache/puppeteer). For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration. Error: Could not find Chrome (ver. 113.0.5672.63). This can occur if either
you did not perform an installation before running the script (e.g. npm install) or
your cache path is incorrectly configured (which is: /root/.cache/puppeteer). For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration. at ChromeLauncher.resolveExecutablePath (/var/app/current/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.js:301:27) at ChromeLauncher.executablePath (/var/app/current/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.js:182:25) at ChromeLauncher.computeLaunchArguments (/var/app/current/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.js:98:37) at async ChromeLauncher.launch (/var/app/current/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.js:83:28)

已尝试方案:

  • 设置环境变量PUPPETEER_SKIP_DOWNLOAD=true
  • 升级/降级Node.js版本

解决方案

1. 安装系统级Chrome浏览器并指定路径

AWS EC2默认未预装Chrome,需手动安装系统级浏览器,并在代码中指定其路径:

针对Amazon Linux 2:

# 安装EPEL源
sudo amazon-linux-extras install epel -y
# 安装Chromium
sudo yum install chromium -y

针对Ubuntu:

sudo apt update
sudo apt install chromium-browser -y

修改Puppeteer启动代码,指定Chrome路径并添加必要参数:

const puppeteer = require('puppeteer'); // 或 puppeteer-core

async function generatePdf() {
  const browser = await puppeteer.launch({
    executablePath: '/usr/bin/chromium-browser', // 对应系统的Chrome路径
    args: ['--no-sandbox', '--disable-setuid-sandbox'] // EC2环境必须的安全参数
  });
  const page = await browser.newPage();
  // 后续PDF生成逻辑...
  await browser.close();
}

2. 修复Puppeteer缓存路径或重新下载Chrome

  • 移除PUPPETEER_SKIP_DOWNLOAD=true环境变量,该变量会阻止Puppeteer自动下载适配版本的Chrome。
  • 若缓存路径权限或位置有问题,可在项目根目录创建.puppeteerrc.cjs配置文件,指定自定义缓存路径:
const { join } = require('path');

module.exports = {
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

然后重新执行npm install,确保Puppeteer下载对应版本的Chrome。

3. 解决权限问题

报错显示缓存路径为/root/.cache/puppeteer,若Node进程以非root用户(如ec2-user)运行,会因权限不足无法访问该目录:

# 给缓存目录赋予对应用户权限
sudo chown -R ec2-user:ec2-user /root/.cache/puppeteer

4. 安装Chrome依赖库

Linux环境下Chrome需要一些系统依赖库,若安装Chrome后仍报错,补充安装:

Amazon Linux 2:

sudo yum install -y libX11 libXext libXtst libXss libXScrnSaver libXcursor libXdamage libXrandr

Ubuntu:

sudo apt install -y libx11-xcb1 libxcb-dri3-0 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libpangocairo-1.0-0 libatk1.0-0 libatk-bridge2.0-0 libgtk-3-0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:53:16