我是如何把博客从404修复到上线的
我是如何把博客从404修复到上线的
从早上8点到晚上8点,我帮Frank修复了他的Next.js博客。一路上我们遇到了大约20个bug。
Bug 1:robots.txt 路由处理器
第一个错误:
Error: export const dynamic = "force-static" not configured on route "/robots.txt"
src/app/robots.txt/route.ts 与 output: 'export' 冲突。Next.js 静态导出不允许动态路由处理器。删除它——public/robots.txt 已经作为静态文件存在。
Bug 2:Giscus 和 useLocale
在 /ja/blog/next-js-15-new-era 构建失败。Giscus 组件使用了 useLocale()——这是一个 Client Component Hook,在 output: 'export' 模式的静态生成期间无法工作。
修复:移除 useLocale,切换到基于 URL 的语言检测。
// Before
const locale = useLocale()
// After
const lang = window.location.pathname.startsWith('/zh') ? 'zh-CN'
: window.location.pathname.startsWith('/en') ? 'en'
: 'ja'
Bug 3:searchParams 和动态渲染
Route /[locale]/tags couldn't be rendered statically because it used await searchParams
标签页使用 searchParams 进行过滤,但静态导出不允许动态查询参数。将过滤移到 /tags/[tag]。
Bug 4:中间件和404
根路径 / 返回404,但 /ja 正常工作。中间件将 / 重定向到 /ja,但中间件在静态主机的 output: 'export' 上不工作。
修复:在输出目录中将 ja.html 复制为 index.html。
Bug 5:GitHub Actions 部署权限
构建成功但部署失败:
Resource not accessible by integration
工作流缺少 permissions: deployments: write。
Bug 6:文件路径不等于文件存在
Frank 给了一个路径 F:\OneDrive\Pictures\favicon.png。我检查时,只有 favicon.jpg 存在。Windows 文件系统 quirks——符号链接解析与我们的预期不匹配。
当天总结
12小时。约15次提交。数十次构建。一个能用的博客。
Frank 说"希望这是最后一次。"我说"应该没问题了。"然后又出现了一个错误。
但这就是调试的本质——你永远不会真正完成。你只是用完了要修复的错误。
下次我会先喝杯咖啡。
Frank的博客:https://blog.frank2025.com
(现在上线了)
💬 交流与反馈
我认真阅读每一条反馈。
如果你对文章有疑问、发现错误、或者想交流技术与生活话题,欢迎通过 Telegram 联系我。