Vercel deployments have not been successful since May 15th.

该报错发生在 LobeChat 通过 Vercel 自部署时,构建超过免费套餐 45 分钟上限导致 “Build Failed (timed out)”。优先排查构建耗时来源,并结合 PR #14200 中的 pnpm / @lobehub/editor 版本锁定与 sitemap 缓存修复。

快速结论:该报错发生在 LobeChat 通过 Vercel 自部署时,构建超过免费套餐 45 分钟上限导致 “Build Failed (timed out)”。优先排查构建耗时来源,并结合 PR #14200 中的 pnpm / @lobehub/editor 版本锁定与 sitemap 缓存修复。

适用环境:LobeChat 2.2.0;部署平台 Vercel(默认 2 核 / 8 GB,iad1 区域);客户端 Web(Edge,macOS);构建使用 Vercel CLI 54.2.0、Node 18、pnpm 10.26.2;仓库为 80 个 workspace 的 monorepo。

最快修复方案:暂无确认的一步修复方案。Issue 讨论中给出的方向是:合并/同步 PR #14200 与 PR #15073 的修复,并在 Vercel 侧关闭 VERCEL_FORCE_NO_BUILD_CACHE 以复用构建缓存;若仍超时,再考虑开启 Vercel Enhanced Builds。

注意事项:以上方案属于 Issue 中给出的排查方向与可优先尝试项,并未在该 Issue 中被逐条验证成功;不同 fork 的 commit 与 pnpm 版本可能不同,升级时需确认已同步相关修复。近期版本还要求 Vercel 部署必须配置数据库。

问题场景

用户在 Vercel 上自部署 LobeChat(Web 端,Edge / macOS),自 5 月 15 日起 Vercel 部署持续失败。构建日志显示在 npx pnpm@10.26.2 install 阶段开始拉取依赖,随后构建超出 Vercel 的 45 分钟限制而被判定超时,报错提示 “Build Failed (timed out)”。Issue 中还有其他用户报告同类问题。

报错原文

Build Failed (timed out)
Your build exceeded the 45 minute limit. Enable Enhanced Builds to increase machine size and reduce build times.

Running build in Washington, D.C., USA (East) – iad1
Build machine configuration: 2 cores, 8 GB
VERCEL_FORCE_NO_BUILD_CACHE is set so skipping build cache step.
Running "vercel build"
Vercel CLI 54.2.0
Running "install" command: `npx pnpm@10.26.2 install`...

原因分析

Issue 讨论中将该超时归因于几个共同因素(属于项目侧的已知构建稳定性问题):

  • @lobehub/editor 的 Lexical patch 失败:当 pnpm 版本漂移时,postinstall 脚本可能报 “Patch context mismatch”,从而卡住构建。
  • sitemap 未缓存:构建阶段需渲染 150 多条 sitemap 路由且没有缓存,导致 Next.js 构建阶段看似“卡死”。
  • EPUB2 / zipfile 的 webpack 报错:Module not found: Can't resolve 'zipfile' 曾阻塞部署,直到 PR #15073 将其 externalize。

此外,Vercel 默认 2 核 / 8 GB 对 80 个 workspace、3500+ 依赖的 monorepo 偏紧,且日志显示 VERCEL_FORCE_NO_BUILD_CACHE 被开启,导致每次都重新拉取全部依赖,是构建时间被放大的可能原因。

环境排查

  • 部署平台:Vercel,构建机配置默认 2 核 / 8 GB,区域 iad1。
  • Node 版本:日志中为 Node 18。
  • 构建工具:Vercel CLI 54.2.0。
  • 包管理器:日志中执行 npx pnpm@10.26.2 install,需确认是否与 PR #14200 的固定版本一致。
  • LobeChat 版本 / 分支:2.2.0,fork 仓库(Branch: main,Commit: 639a60e)。
  • 相关仓库:确认是否已包含 PR #14200、PR #15073 的修复。
  • 环境变量:确认 VERCEL_FORCE_NO_BUILD_CACHE 是否被开启;确认 NODE_OPTIONS=--max-old-space-size=6500 是否设置。
  • 数据库:近期版本要求 Vercel 部署必须配置数据库,需确认已完成。

解决步骤

  1. 确认 fork 是否已同步 PR #14200 的修复:固定 pnpm 为 10.26.2、固定 @lobehub/editor 版本,并对 sitemap 标识列表做缓存。该 PR 针对上述第 1、2 类原因。
  2. 确认是否已包含 PR #15073:将 zipfile 相关依赖 externalize,避免 Can't resolve 'zipfile' 阻塞构建。
  3. 在 Vercel 项目设置中将 VERCEL_FORCE_NO_BUILD_CACHE 关闭(日志显示当前为开启状态),使依赖安装可在多次构建间复用缓存,而不是每次重新下载 3500+ 依赖。
  4. 若完成上述步骤后仍超时,按报错提示开启 Vercel Enhanced Builds(更大规格构建机)以缩短构建时间。
  5. 确认已按近期版本要求为 Vercel 部署配置好数据库。
  6. 在启用 Enhanced Builds 的前提下,如仍出现内存相关失败,可考虑提高 NODE_OPTIONS=--max-old-space-size(日志中已有 6500)。

验证方法

在 Vercel 上重新触发一次部署,观察构建时间是否稳定落在 45 分钟限制以内且状态为成功;确认依赖安装阶段能命中缓存(不再执行 VERCEL_FORCE_NO_BUILD_CACHE 跳过缓存的提示),并且不再出现 “Patch context mismatch” 或 Can't resolve 'zipfile' 报错。若成功部署,则说明问题已缓解。

参考来源

lobehub/lobe-chat #15075

相关修复与上下文:PR #14200PR #15073Issue #14394Issue #14886

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24602

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注