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

Vercel部署Next.js应用启动浏览器进程失败问题求助

解决Vercel部署Next.js后Chromium启动失败问题

问题根源

Vercel的Serverless运行环境是精简版Linux系统,缺少Chromium运行所需的系统依赖库(如libnss3.so),导致浏览器进程无法启动。

解决方案

方案1:使用适配Serverless的Chromium包(推荐)

卸载官方puppeteer,改用puppeteer-core搭配chrome-aws-lambda(专为无服务器环境优化的Chromium分发包):

npm uninstall puppeteer
npm install puppeteer-core chrome-aws-lambda

修改代码中的浏览器初始化逻辑:

import chromium from 'chrome-aws-lambda';
import puppeteer from 'puppeteer-core';

export async function launchBrowser() {
  const executablePath = await chromium.executablePath;
  return puppeteer.launch({
    executablePath,
    args: chromium.args,
    headless: chromium.headless,
    ignoreDefaultArgs: ['--disable-extensions'],
  });
}

此方案会自动使用兼容Vercel环境的Chromium,无需手动处理系统依赖。

方案2:在构建阶段安装缺失依赖

若必须使用官方puppeteer,可在vercel.json中配置构建命令,安装所需系统库:

{
  "buildCommand": "apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound2 libpangocairo-1.0-0 && npm run build"
}

注意:部分Vercel环境可能限制apt-get执行,此方案优先级低于方案1。

方案3:跳过Puppeteer自动下载

在package.json中添加配置,禁止Puppeteer自动下载本地Chromium:

{
  "puppeteer": {
    "skipDownload": true
  }
}

随后配合chrome-aws-lambda提供的Chromium路径使用,逻辑同方案1。

验证建议

  • 避免硬编码本地Chromium路径,全部使用动态获取的路径
  • 部署前用vercel dev命令在本地模拟Vercel环境测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:58:20