从Astro到Emdash踩坑记(一)

我短短续续的写博客差不多也有很多年了, 只不过一直没有太坚持下来。 Wordpress Jekyll Ghost 等都试过, 最后还是使用Astro来搭建自己的博客, 也算是坚持了比较长的时间了。 当Cloudflare宣布他们的Wordpress替换 EmDash 的时候, 由于是Vide Code的, 我第一时间没有上手, 在过去几个月之后,发现还在持续保持更新, 并且已经有不少人进行迁移之后, 我也开始着手进行迁移

使用Claude Code进行替换

在2026年9月份的现在,绝大部分人应该都会通过AI来进行迁移吧, 现在的AI已经足够优秀了, 所以我只是打开了 Claude Code, 然后输入

https://docs.emdashcms.com/existing-project/

参考这个, 把现有的astro 更改成使用 emdash 管理的CMS

然后AI就会开始根据文档以及现有现有的项目构造进行安装Emdash。我这边安装了 CloufFlare 的Connector, CC甚至还能够直接为我创建D1和R2, 真的是省心又省力。

emdash-setup-1.png
emdash-setup-2.png
emdash-setup-3.png



在经过一段时间后,我这边已经顺利部署EmDash到CF上, 并且已经成功设置 EmDash的后台使用PassKey登录(which 是个坑, 在后面的文章会讲到)。

初步部署的两个核心要点总结

虽然在 Claude Code 的帮助下,整个部署链路非常丝滑,但结合实际操作,有两条至关重要的经验必须提前提醒大家:

1. 原有的 MDX 文章:必须百分之百确认在 EmDash 入库后再删!

本地 Markdown/MDX 文件是你在 Git 里的绝对资产。在将内容导入 EmDash 后,务必在 Admin 后台和前端页面挨个确认数据已经完整存在于 Cloudflare D1 数据库中,**千万不要在部署成功的第一时间就急着把本地原文件删掉**。先留一份完整的归档备份,确认数据无损再做清理。

2. 强烈建议:先配置好自定义域名,再去设置 PassKey 登录!

这是一个绝大多数人(包括我)极容易踩中的隐蔽暗坑:

- 很多人在刚部署完时,会习惯性地在默认生成的 *. workers.dev 临时域名下完成后台初始化,并顺手绑了自己设备的 PassKey。

- 然而,PassKey(WebAuthn)是强绑定访问域名的(Origin / rpId)。一旦你后续绑定了自己的独立自定义域名,**通过自定义域名访问时,原有在 workers.dev 下创建的 PassKey 将直接失效,无法用于登录!**

下篇预告:那个让我差点被锁在后台外面的 PassKey 暗坑

上一节提到的第二个要点,其实就是我在这次部署中最真实的一个切肤之痛:

当时我在 workers.dev 下高高兴兴地配好了 PassKey,但当我把自己的独立域名绑定上去后,发现自定义域名的后台根本刷不出那个 PassKey。

这时候系统提示可以用邮箱验证码登录,结果尴尬的事情来了——**我当时压根还没有去配置邮件服务(Email Provider)!**

PassKey 用不了,邮箱验证码收不到,我险些直接把自己亲手搭建的后台锁死在门外……

究竟该如何脱困?Cloudflare 边缘环境下的邮件插件又该怎么配?下一篇文章,我们专门来深挖这个让人哭笑不得的 PassKey 与登录鉴权踩坑实录。

Related
Claude Code · Debugging When Claude Code Can't Find Git (But Git Works Fine in Terminal)

Claude Code's desktop app kept insisting I install Git, even though git ran perfectly in my terminal. The real culprit wasn't Xcode Command Line Tools or a broken PATH — it was a dead Homebrew symlink from 2022 sitting first in my resolution order. Here's the full debugging trail, including all the dead ends.

Jul 23, 2026
AI · Claude Code Building Lexio with Two Claudes: A Workflow That Actually Works

How I use Claude Projects for architecture decisions and Claude Code for implementation—keeping thinking and coding deliberately separate, with Lexio as a real-world example.

Mar 13, 2026
Cloudflare · Deployment My First Rails Deployment Journey with Kamal

Notes on deploying a Rails app with Kamal for the first time: proxy conflicts with Caddy, Cloudflare forward_headers, and debugging Docker volume mounting errors.

Oct 22, 2025
All posts