Bun runtime で Hono on Next.js と戯れる

#雑記


Next.js × Hono の記事がタイムラインに流れてきて、Hono を使いつつ楽に React を立ち上げる環境を探るために手元で動かしていた。


pp/api/[[...route]]/route.ts を見ると分かるが、Next.js API (Hono で処理する) は Edge Runtime で動かしている

(Edge は Hono 公式ドキュメントも同様)


しかし、Bun runtime (検証した Bun は最新の v1.1.6)はまだ Web APIs の TextDecoderStream をサポートしていないため、以下のようなエラーになる

$ bun --bun x next dev
.
.
 ✓ Compiled /api/[[...route]] in 1868ms (677 modules)
 ⨯ error: Attempt to export a nullable value for "TextDecoderStream"
      at defineProperties (file:///Users/yoshikouki/src/github.com/yoshikouki/honon/node_modules/next/dist/compiled/edge-runtime/index.js:13918:28)
      at addPrimitives (file:///Users/yoshikouki/src/github.com/yoshikouki/honon/node_modules/next/dist/compiled/edge-runtime/index.js:13902:25)
      at extend (file:///Users/yoshikouki/src/github.com/yoshikouki/honon/node_modules/next/dist/compiled/edge-runtime/index.js:13854:113)
      at new VM (file:///Users/yoshikouki/src/github.com/yoshikouki/honon/node_modules/next/dist/compiled/edge-runtime/index.js:13946:88)
      at new EdgeVM (file:///Users/yoshikouki/src/github.com/yoshikouki/honon/node_modules/next/dist/compiled/edge-runtime/index.js:13854:16)
      at file:///Users/yoshikouki/src/github.com/yoshikouki/honon/node_modules/next/dist/server/web/sandbox/context.js:102:163

この対応状況は Bun's Roadmap で確認することができる


Bun runtime (bunx --bun next dev) で動かないというだけであり、Node.js 互換としては問題なく動いた (bunx next dev)

また、Next.js が Edge Runtime 設定でなければ (export const runtime = "edge"; の削除)、最小構成の現在は Bun runtime でも動いている。


Bun が v1.0 になりプロダクションレディを宣言したとはいえ、Bun runtime の方は Web APIs などのサポートが完全ではない。今後も留意したい。

まあ Edge な Bun runtime で Next.js を動かすケースは本番ならそこまで多くないかも知れないが。

この記事が気に入ったらサポートをしてみませんか?