~/adventure-log/2026/09/from-astro-to-emdash-part3
テックこのページは原文を AI が翻訳したものです。

AstroからEmdashへの移行でハマった話(その3)

AstroからEmDashに移行した後、管理画面に公開日時フィールドが2つ残っていて、予約投稿もずっと反映されませんでした。この記事では、余分なpublication dateを削除する方法と、wrangler.jsoncでCron Triggerを設定し、scheduled handlerを追加して予約投稿を実際に動かす方法を記録します。

公開
読了時間
2 分
タグ
AstroCloudflare
前2回の記事での奮闘により、現在はEmDashの管理画面から記事を投稿できるようになりました。ただ、Astroから移行してきたこともあって、いくつか歴史的な負債というか、不自然な点を修正する必要があります。

公開日時の二重管理

double-publish-date.webp

図からわかるように、一番下の Publication date は以前Astroで静的MDXブログを書いていたときのpubDateの値です。一方、右側にはEmDash独自のPublish dateもありますが、この2つはどちらか1つだけ残せば十分です。ここではEmDash標準のものを残し、下のPublication dateは削除します。

対処法も簡単で、Content Types → Post に移動して publication date という項目を確認し、削除をクリックするだけです。

もちろん、関連するコードの修正についてはここでは詳しく触れません。Claude Codeに任せれば簡単に完了します。

post-custom-fields.png

予約投稿が成功しない

もう1つ問題があって、記事の予約投稿を設定しても、指定した時間になっても公開されませんでした。ただ、よく考えてみれば当然で、関連するCronを設定していなかったので、予約投稿が動くはずもありません。

post-schedule-failed.png

解決方法も簡単で、公式ドキュメントを参考に、wrangler.jsonc ファイルに以下の設定を追加します。

plaintext
{
    "main": "./src/worker.ts",
    "triggers": { "crons": ["* * * * *"] },
}
plaintext
# ./src/worker.ts

/**
 * Cloudflare Worker entry.
 *
 * The Astro adapter's own entry only exports `fetch`, so nothing drives
 * EmDash's scheduled work in production: the Cloudflare build sets
 * `createScheduler = null` and expects a Cron Trigger to call
 * `runScheduledTasks()` through a `scheduled()` handler. This re-export adds
 * that handler to the same Worker, which is what `emdash doctor` checks for.
 * Without it, scheduled posts stay `scheduled` past their publish time.
 */
export { default, PluginBridge } from "@emdash-cms/cloudflare/worker";

その後、デプロイを進めると、以下のような設定が表示されていれば成功です。これで予約投稿機能を正常に使えます!

triggers.png

収集品を手に入れた· Item get

No.028

古代の歯車

ノーマル

地方
古代技術の高地
生息地
Astro · Cloudflare
発見日
冒険時間
2 分 · これまでに 1 人の旅人が訪れた

この冒険を読み終えて手に入れた。読む人が増えるほど、レア度が上がる。

Epona
執筆Epona

There's nothing wrong with having a little fun

x.com/simura_epona

関連記事Nearby quests

コメントを読み込み中…