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

在Netlify Lambda函数中使用Puppeteer时遇Chromium未找到错误

Puppeteer部署Netlify Lambda时找不到Chromium(rev.1108766)的解决方法

针对你遇到的「开发环境正常、部署到Netlify Lambda时找不到指定版本Chromium」的问题,以下是针对性的解决步骤:

1. 确保构建阶段Chromium被正确打包到部署包

Netlify的构建环境和运行环境是分离的,必须确保npm install时下载的Chromium被包含在最终部署的函数包里:

  • 检查package.json中的Puppeteer版本,确认其对应Chromium rev为1108766(Puppeteer 19.x系列对应此版本)
  • 在Netlify构建命令中保留npm install,不要跳过依赖安装,比如在netlify.toml中配置:
[build]
  command = "npm install && npm run build"
  • 如果本地构建后发现.cache/puppeteer未被打包,在package.json中添加files字段强制包含缓存目录:
{
  "files": [
    ".cache/puppeteer/**/*",
    "*.js"
  ]
}

2. 手动指定Chromium可执行路径(核心解决步骤)

仅设置缓存目录不足以让Puppeteer找到Chromium,必须在代码中明确指定可执行文件路径,推荐使用puppeteer-core替代puppeteer以获得更精准的控制:

  • 安装puppeteer-core:
npm install puppeteer-core
  • 修改代码,结合你的函数目录路径指定Chromium位置:
const puppeteer = require('puppeteer-core');

// 替换为你实际的Chromium可执行文件路径
const chromiumExecPath = '/var/task/netlify/functions/pgnfen/.cache/puppeteer/chrome/linux-1108766/chrome';

const browser = await puppeteer.launch({
  executablePath: chromiumExecPath,
  // Lambda环境必须添加沙箱禁用参数
  args: ['--no-sandbox', '--disable-setuid-sandbox']
});

3. 检查本地构建产物验证文件是否存在

在本地执行netlify build后,进入.netlify/functions-build/pgnfen/.cache/puppeteer目录,确认chrome/linux-1108766文件夹存在且包含chrome可执行文件。如果缺失,说明构建过程中Chromium未被正确下载,可手动下载对应版本的Chromium并放置到该目录。

4. 回退到之前正常运行的Puppeteer版本

由于问题是近期新增的,说明之前的版本在Netlify环境下是兼容的:

  • 卸载当前版本:npm uninstall puppeteer
  • 安装旧版本(比如对应rev1108766的19.8.0版本):npm install puppeteer@19.8.0

5. 禁用自动下载并手动放置Chromium(兜底方案)

如果上述方法无效,可手动下载指定版本的Chromium:

  • 下载Linux版本的Chromium rev1108766并解压到函数目录的.cache/puppeteer/chrome/linux-1108766下
  • 在Netlify环境变量中添加PUPPETEER_SKIP_DOWNLOAD=true,避免构建时自动下载覆盖本地文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:20:29