Astro adapter 与 SSR/SSG 模式不匹配 —— 排查与修复
Astro 部署失败或页面白屏,往往是 adapter 与 output 模式对不上,路由级 prerender 又把全局模式给覆盖了。
Vercel build、Firebase Hosting、Astro 部署、路由 404、sitemap、robots.txt。
部署阶段的报错往往不是代码错,而是构建工具配置错。 这里覆盖 Vercel、Firebase Hosting、Astro / Next 静态站的典型问题:build 失败、卡住、500、404、sitemap / robots 不生效。
Astro 部署失败或页面白屏,往往是 adapter 与 output 模式对不上,路由级 prerender 又把全局模式给覆盖了。
Vercel 或 Netlify 的 preview URL 出现在 Google 索引里,甚至盖过你的正式域名,几乎都是 preview host 上漏了 noindex 头或 robots 屏蔽。
GitHub Actions 部署步骤挂在那里直到 6 小时 job 上限被取消,通常是等待部署的轮询、网络出站受阻,或部署 CLI 在等一个永远不会到的输入。
monorepo 里有三个可部署 app,Vercel 只发了一个,通常是根目录配错、Ignored Build Step 没设对、或 Turbo filter 漏掉了别的。
Netlify Function 本地正常,但闲置后首次请求返回 502 报 'Task timed out after 10.00 seconds',几乎都是冷启动初始化太重或上游 DNS 问题。
ISR 页面 revalidate 窗口早就过了还在发旧 HTML,几乎都是 CDN 边缘缓存盖住 ISR、构建产物错位,或 revalidatePath 调用的路径不匹配。
部署完用户还看到旧站点,因为 service worker 拦了请求把旧 bundle 发回去,永远不去拉新的 —— 用 skipWaiting、干净缓存范围、紧急关停一齐处理。
Vercel 构建跑了 45 分钟被 'Build exceeded maximum duration' 强杀,通常是缓存失效、页面生成失控,或某个构建后脚本卡死。
改了主域名,但 canonical 还指老的——通常是配置 + 缓存。
域名绑了几小时 SSL 还没好——通常是 DNS 或 CAA。
Vercel/Netlify 仪表盘绿勾、commit hash 也对,访客刷新还是昨天那版——多半是 service worker 抢答、CDN 没失效或中间代理缓存。本文给一条 10 分钟诊断路径。
改完 DNS 本机 dig 出新值、同事打不开、海外刷新忽新忽旧——这不是 bug 是设计。本文讲清楚 TTL 倒计时机制,并给一套提前降 TTL 把生效窗压到可控的修复路径。
本地能跑、线上 500——env 没设或前缀不对(PUBLIC_/VITE_/NEXT_PUBLIC_)。
部署到 Firebase Hosting 后首页正常,但访问 `/about` 或子页面就 404?这是 firebase.json 的 rewrites 没配好。本文按 SPA、SSG、静态多页站、Astro / Next 各场景给出修复方案。
分享到 LinkedIn / X / Slack 没图——meta 标签 / 尺寸 / 缓存。
vercel.json 或 _redirects 里配的 301 部署后没生效,多半是规则没进 build、被前面的 catch-all 拦截或 CDN 缓存旧响应。本文按命中率拆 5 类,并给 curl -I 验证步骤。
/rss.xml 或 /feed.xml 404——通常是端点没生成、文件名不对或宿主拦截。
/images/foo.png 404——路径 / base / 上传步骤。
线上站打开 title 闪一下就剩白屏、HTML 在但 DOM 空——多半是 JS 抛错被吞、资源路径错或 CSP 拦了脚本。本文给一套 10 分钟定位根因的检查顺序。
/foo → /foo/ → /foo 这种链——挑一种用,并保持一致。