🕌
【追記あり】Elysia + Cloudflare Workers(Wrangler)を使うには
Bun環境でしか動かないと思われがちなElysia.jsですが、Node環境(pnpm)でも動きます。
また、Wranglerと組み合わせて、Cloudflare Workersで使うこともできます。
結論
以下のようにすれば動かすことができます。
環境のセットアップ
pnpm install elysia
pnpm install -D wrangler @types/node
Wranglerの設定
wrangler.json
{
"$schema": "./node_modules/wrangler/config-schema.json",
"main": "index.ts",
"name": "elysia-test",
"compatibility_date": "2025-03-25",
"compatibility_flags": ["nodejs_compat"],
"observability": {
"enabled": true
},
}
compatibility_flagとdate(互換性フラグ)は
ここを参考に任意のものを設定してください。
サンプルコードの作成
index.ts
import { Elysia } from 'elysia'
const app = new Elysia({
aot: false,
})
.get('/', () => 'Hello Elysia')
export default app
重要なのが、aot:falseで、これを設定しないと事前コンパイルが動作し、エラーになります。
起動する
pnpm wrangler dev index.ts --port 8080
これで開発サーバーが起動します。
EvalError: Code generation from strings disallowed for this context といわれた
aot:false を設定してますか?
してない場合はエラーになります。
service core:user:elysia-test: Uncaught Error: WebStandard does not support listen, you might want to export default Elysia.fetch instead といわれた
.listen でリッスンを設定していませんか?
している場合は外しましょう。
以上
ElysiaはWinterCG(現WinterTC)に準拠した、Web Standardなフレームワークなので、意外とどこでも動きます(まだちゃんと使い込んでるわけではないので、もしかしたら一部Bun依存で動かないとかあるかも、例えばここでは、Elysia static pluginはBun.file依存だと書かれている)
ElysiaはHonoに似て結構書きやすく型安全なフレームワークなので、もっといろんなところで使ってほしいです
(多分パフォーマンスも落ちると思うので、はやくCloudflare Workers ContainerでBunで動かしたいな)
参考
Discussion