快速自检:看 Build Logs 末尾

Build Logs 末尾出现:

  • Build exceeded maximum duration of 1500s
  • Process killed
  • Build cancelled

且 build 总时长 ≥ 25 分钟。

最短处理路径

Step 1:检查 build 命令

很多人没注意,pnpm install && next build 中 install 阶段就吃了 5-15 分钟。先优化 install:

# 用 pnpm 而不是 npm
# 配 .npmrc 加速
NPM_CONFIG_REGISTRY=https://registry.npmmirror.com/
# Cloudflare Pages 支持

Step 2:升级到 Workers Build

Cloudflare 2024 年起推 Workers Build 替代 Pages。

Pages FreeWorkers FreeWorkers Paid
build 时长25 min25 min90 min
月度 build 次数5001006,000
Bindings 支持部分完整完整

数据来源:developers.cloudflare.com 与 Workers Builds 文档。

Step 3:拆 monorepo

如果是 Turborepo:

# wrangler.toml
[build]
command = "turbo build --filter=web^... --cache-dir=.turbo"

只构建 changed package,省 50-70% 时间。

Step 4:依赖缓存

Cloudflare Pages 默认只缓存 node_modules。手动加 pnpm store:

# .github/workflows/build.yml(本地预 build 方案)
- uses: actions/cache@v3
  with:
    path: |
      ~/.pnpm-store
      .next/cache
    key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}

或用 Turborepo Remote Cache(vercel.com/docs/concepts/monorepos)跨 build 共享 cache。

Step 5:本地 build 推 dist

如果上面四步都不够,跳过 Cloudflare build:

# 本地或 GitHub Actions
pnpm install
pnpm build
# 直接推
npx wrangler pages publish ./dist --project-name=my-app

这样 Cloudflare 只做静态托管,不参与 build。失去 PR Preview 但 build 不再超时。

为什么会这样

Cloudflare Pages build container 性能限制:

  • 4 vCPU、8GB 内存(Pages Free / Pro)
  • 25-30 分钟时长上限
  • 不像 Vercel 那样有 enhanced build container
  • 国际网络下载依赖较慢(特别是中国时区)

对于 Next.js 15 + tRPC + Tailwind + 50 个 page 项目,build 时长 20-30 分钟是常态。如果项目继续膨胀,必然超时。

继续查 Cloudflare Pages timeout

现象:偶尔超时

依赖下载慢导致。看 build logs 哪一行卡了几分钟。如果是 pnpm install 阶段,配 npm mirror。

现象:每次都超时

项目规模超过 Cloudflare Pages 能力。考虑迁移到 Vercel(5GB build memory + 45 分钟时长)或 Netlify。

现象:本地 build 5 分钟 / Cloudflare 25 分钟

主要是依赖下载差异 + monorepo build 缓存丢失。看上面 Step 3 + Step 4。

如果还没恢复

迁回 Vercel:

Cloudflare PagesVercel
Free 档 build25 min45 min
Pro 档 build30 min90 min
Build memory8GB16GB(Enhanced)
缓存机制基础Turborepo Remote 集成

Vercel Free $0/月足够大多数项目。如果你不依赖 Cloudflare Bindings(D1 / R2 / KV),Vercel 更稳。

跨地区访问 Cloudflare Dashboard

国内访问 Cloudflare Dashboard 偶尔加载缓慢,特别是 Pages 部署详情页和 Real-time Logs 流式输出。一条海外服务跑 GitHub Actions / Cloudflare 的稳定线路能让 Dashboard 顺畅、排查更快。

相关报错

相关阅读