Github に Issue が立っていました
「Next.js + Drizzle ORM (mysql2, PoolConnection) のバージョンに注意したい話」というタイトルで以前記事を書いたのですが、
済みません、ちょっとソースコードを変えたら同じエラーが出たため違う原因を探していたところ、Githubに既にIssueが立っておりました。失礼いたしました。
対処方法
next.config.mjs
/** @type {import("next").NextConfig} */
const config = {
// これを追加すると良いそうです
serverComponentsExternalPackages: ["mysql2"],
}
export default config
Next.js がバンドル操作を行う際に、Node.js特有の機能を使用するパッケージを上手く取り入れられない場合があるそうです。
https://nextjs.org/docs/app/api-reference/next-config-js/serverExternalPackages
Next.jsはそういった性質を持つライブラリのリストを使ってある程度自動で対処しているらしいのですが、
node-mysql2 パッケージはその対象外になっているので、自分で設定する必要があるというのが問題の本当の原因だった可能性が高いです。
もう少し推察
何かしらOSに関わる機能(ファイルシステムに触る、他の実行ファイルやコマンドを呼び出す 等)の動作をするものはこの条件に該当しそうですから、
そういったものをNext.jsと一緒に使う際には、事前に serverComponentsExternalPackages
に入れておく等しようと思います。