Open4
Hono & Cloudflare Workers で Scheduled Handler が動かない
ピン留めされたアイテム
結論
worker.ts 側で scheduled handler を export したら動いた
// server/index.ts
...
// scheduled 単体で export しておく
export const scheduled: ExportedHandlerScheduledHandler<Env> = async (
event,
env,
ctx,
) => {
async function run() {...}
ctx.waitUntil(run());
};
// ここでは fetch, scheduled ハンドラーを個別に export しない
export default app;
// worker.ts
import handle from "hono-react-router-adapter/cloudflare-workers";
import * as build from "./build/server";
import { getLoadContext } from "./load-context";
import app, { scheduled } from "./server";
const app2 = handle(build, app, { getLoadContext });
export default {
fetch: app2.fetch,
scheduled,
};
Handler does not export a scheduled() function
となってしまう
環境
hono & cloudflare workers の上で react router v7 を動かしたかったので、hono-react-router-adapter を使っており、フォルダ構成などはこの example を参考に作っていた
そして、scheduled handler を動かすために server/index.ts は下の記事を参考にこのように書いていた
// server/index.ts
...
export default {
fetch: app.fetch,
scheduled,
};
hono-react-router-adapter の handle が、新しい Hono インスタンスに我々 (ユーザー) の渡した Hono インスタンス (userApp) と react router を載せるという実装だったためっぽい。
server/index.ts で scheduled handler を export してても hono-react-router-adapter 側に上書きされちゃう、みたいな。
ログインするとコメントできます