2分で読めます. 雑に書きます.
同じ苦しみを味わう人を無くしたい記事です.
前提
Next.js + Cloudflare Workers + Drizzle + Neon + Hono
この構成でブログサイトを作ろうとしている人間に起きた事件です.
公式ドキュメントの罠
Workersの公式ドキュメントで,Neonについてのページ を見ると,
\Neonを使う時はHyperdriveを推奨するよ(意訳)/
って書いてあります.
普通はそうみたいなんですけどねぇ...
よく考えずに従ったのが大ミスだった
WorkersはNode環境じゃない
あんまり詳しくないのですが, WorkersはネイティブにはNode.js依存のパッケージをサポートしていません.(合ってる?)
Node.jsランタイムのNext.jsをデプロイ出来るのも, OpenNextが頑張ってくれていて無理やり動かしているだけです.
pg
公式ドキュメントの最後の方に「こんな感じでテストよろ」っていうコードが載せてあります.
その最初の行がコチラ
import { Client } from "pg";
そしてpgの説明はコチラ
Install the node-postgres driver:
とドキュメント上にあるように, node.js下でpostgreSQLを使うときのドライバです.
ここまでたどり着かないと気づかないんですよね. ミスに.
普通なら, Hyperdriveが本来node.jsでサポートされているpgを動かせるように色々します(多分)
しかし, 本来node.jsじゃないと動かないはずのNext.jsが介入することによってそのへんがごちゃごちゃになります.
CloudflareでNext.js(OpenNext)を運用してVercelに移行した話
たぶん同じようなことだと思われる
逃げ道はある?
AIに
「どうにかなるかい?」
と聞いたところ, 返答は
「うーんexport const runtime = "nodejs";なんてどう?」
でした. 絶対やめたほうがいいよなこれ.
もう一つの方法を使おう
茨の道を進みたく無ければ, ドキュメントに書かれたもう一つの方法,
"Neon serverless driver"を使いましょう.
最後に
博識な方, どうぞ「なに当然のこと言ってんだ?」とか冷笑してください.
そして適当な記事ですが間違ってたらコメントください.