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

Google Cloud Functions中Puppeteer无法启动浏览器问题求助

Google Cloud Functions 部署 Puppeteer 找不到 Chromium 问题解决

问题核心

在GCF部署Puppeteer后出现「找不到Chromium(版本1056772)」及内部服务器错误,根源在于:Cloud Functions构建阶段与执行阶段的文件系统路径不匹配,默认缓存目录/workspace/.cache/puppeteer在执行环境中不存在;且本地Cloud Shell安装的依赖不会直接同步到部署后的实例中。

解决方案

方案1:使用puppeteer-core + 调用GCF预装Chrome(推荐)

此方案无需手动管理Chromium下载,利用GCF Node.js运行时自带的兼容版本Chrome:

  1. 修改package.json,替换为轻量版puppeteer-core:
{
  "dependencies": {
    "puppeteer-core": "^19.2.2"
  }
}
  1. 修改index.js中Puppeteer启动配置,指定系统预装Chrome路径:
const puppeteer = require('puppeteer-core');

exports.yourFunctionName = async (req, res) => {
  try {
    const browser = await puppeteer.launch({
      executablePath: '/usr/bin/google-chrome',
      args: ['--no-sandbox', '--disable-setuid-sandbox', '--headless', '--disable-gpu']
    });
    // 保留原教程中的页面操作逻辑
    const page = await browser.newPage();
    // ... 后续代码不变

    await browser.close();
    res.status(200).send('操作完成');
  } catch (err) {
    console.error(err);
    res.status(500).send('执行出错');
  }
};
  1. 重新部署函数,GCF会自动安装puppeteer-core依赖。

方案2:调整缓存路径,将Chromium打包进部署包

若坚持使用完整版puppeteer(自动下载Chromium):

  1. 在项目根目录创建.puppeteerrc.cjs文件,指定缓存目录到项目内:
const { join } = require('path');

module.exports = {
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};
  1. 在Cloud Shell中重新执行安装命令,让Chromium下载到项目目录:
npm install --save puppeteer
  1. 修改index.js中的启动配置,指定项目内的Chromium路径(注意替换版本号为你报错的1056772):
const puppeteer = require('puppeteer');
const { join } = require('path');

exports.yourFunctionName = async (req, res) => {
  try {
    const browser = await puppeteer.launch({
      executablePath: join(__dirname, '.cache', 'puppeteer', 'chrome', 'linux-1056772', 'chrome'),
      args: ['--no-sandbox', '--disable-setuid-sandbox', '--headless', '--disable-gpu']
    });
    // 原教程代码逻辑不变
    await browser.close();
    res.status(200).send('操作完成');
  } catch (err) {
    console.error(err);
    res.status(500).send('执行出错');
  }
};
  1. 部署前确认.gcloudignore文件未排除.cache目录,确保Chromium被打包进部署包。

关键注意事项

  • 必须添加--no-sandbox和--disable-setuid-sandbox参数:GCF执行环境无权限运行沙箱模式的Chrome。
  • 保持2GB内存、500秒超时的配置:Chrome运行需要足够内存,页面操作需充足超时时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:20:36