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

Vercel部署Node.js应用遇Puppeteer '找不到Chromium'错误如何解决?

解决Vercel部署中capture-website找不到Chromium的问题

核心原因

Vercel的Serverless运行环境默认不包含Chromium,且默认缓存目录(/home/sbx_userxxx/.cache/puppeteer)无写入权限或不存在,导致Puppeteer无法找到预下载的浏览器文件。

具体解决方案

1. 配置环境变量强制下载Chromium并指定缓存目录

在Vercel项目的环境变量设置中添加以下两个变量:

  • PUPPETEER_SKIP_DOWNLOAD=false:确保安装依赖时自动下载Chromium
  • PUPPETEER_CACHE_DIR=/tmp/puppeteer:将Chromium缓存到Vercel允许写入的/tmp目录

2. 修改代码配置capture-website的Puppeteer启动参数

调用captureWebsite时,传入puppeteerLaunchOptions配置,适配Vercel的无头环境:

const captureWebsite = require('capture-website');

async function takeScreenshot() {
  await captureWebsite.file('https://example.com', 'screenshot.png', {
    puppeteerLaunchOptions: {
      args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage',
        '--single-process'
      ],
      executablePath: process.env.PUPPETEER_EXECUTABLE_PATH
    }
  });
}

3. 可选:在package.json中添加postinstall脚本

如果环境变量配置后仍未生效,可在package.json的scripts中添加脚本,确保安装依赖时完成Chromium下载:

"scripts": {
  "postinstall": "npx puppeteer install"
}

4. 检查Vercel构建配置

确保Vercel的构建命令使用npm install,避免使用跳过依赖安装的命令,同时确认构建过程中未忽略node_modules相关文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:21:03