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

Firebase无服务器函数部署Puppeteer Core时卡在浏览器启动

解决Firebase无服务器函数中Puppeteer Core启动卡住的问题

1. 对齐Puppeteer Core与Chromium版本

你当前使用的puppeteer-core@21.3.8对应Chromium 118版本,但@sparticuz/chromium@112.0.0是Chromium 112版本,版本不兼容会直接导致浏览器启动失败。需调整依赖至匹配状态:

方案A:降级Puppeteer Core适配现有Chromium

修改package.json依赖:

"puppeteer-core": "^19.11.1",
"@sparticuz/chromium": "^112.0.0"

(Puppeteer 19.x系列对应Chromium 112版本)

方案B:升级Chromium适配现有Puppeteer Core

修改package.json依赖:

"puppeteer-core": "^21.3.8",
"@sparticuz/chromium": "^118.0.0"

(@sparticuz/chromium的版本号需与Puppeteer对应Chromium版本完全一致)

2. 调整Firebase函数资源配置

Firebase函数默认的256MB内存、60秒超时不足以支撑Chromium启动,需提升资源配额:
在firebase.json中添加或修改函数配置:

{
  "functions": {
    "runtimeOptions": {
      "memory": "1GB",
      "timeoutSeconds": 120
    }
  }
}

执行firebase deploy --only functions使配置生效。

3. 优化浏览器启动参数

使用@sparticuz/chromium提供的预定义启动参数,避免手动参数冲突:

const browser = await puppeteer.launch(
  isLocal
    ? undefined
    : {
        args: chromium.args,
        executablePath: execPath,
        headless: chromium.headless,
        ignoreHTTPSErrors: true,
      }
);

chromium.args包含无服务器环境下的最优启动参数,无需额外添加--disable-gpu等冗余参数。

4. 验证环境分支逻辑

确保生产环境不会误加载本地Puppeteer模块:

  • 本地测试时,终端执行export IS_LOCAL=true后启动函数
  • 生产环境中Firebase不会设置该变量,确保分支逻辑正确走向puppeteer-core和Chromium路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:39:56