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:
- 修改
package.json,替换为轻量版puppeteer-core:
{ "dependencies": { "puppeteer-core": "^19.2.2" } }
- 修改
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('执行出错'); } };
- 重新部署函数,GCF会自动安装
puppeteer-core依赖。
方案2:调整缓存路径,将Chromium打包进部署包
若坚持使用完整版puppeteer(自动下载Chromium):
- 在项目根目录创建
.puppeteerrc.cjs文件,指定缓存目录到项目内:
const { join } = require('path'); module.exports = { cacheDirectory: join(__dirname, '.cache', 'puppeteer'), };
- 在Cloud Shell中重新执行安装命令,让Chromium下载到项目目录:
npm install --save puppeteer
- 修改
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('执行出错'); } };
- 部署前确认
.gcloudignore文件未排除.cache目录,确保Chromium被打包进部署包。
关键注意事项
- 必须添加
--no-sandbox和--disable-setuid-sandbox参数:GCF执行环境无权限运行沙箱模式的Chrome。 - 保持2GB内存、500秒超时的配置:Chrome运行需要足够内存,页面操作需充足超时时间。
内容的提问来源于stack exchange,提问作者smith007
相关产品推荐
相关产品推荐

