1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.js の本番環境でのみ mysql2 関連のエラーが出る際の対処

Posted at

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 に入れておく等しようと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?