はじめに
Prisma と Docker を使用してデータベースを作成している際に、@prisma/client did not initialize yetというエラーが発生しました。
今回は、その原因と解決方法についてまとめます。
この記事は個人的なアウトプットを目的として作成したものです。そのため、誤った情報や不足している内容が含まれている可能性があります。もし間違いや気になる点がございましたら、ぜひご指摘いただけますと幸いです。
事象
docker compose up実行時に、Prismaで以下のエラーが発生しました。
@prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.
エラーメッセージからは「prisma generateを実行していないのでは?」と考えてしまいがちですが、今回の原因は別のものでした。
原因
PrismaClientのインポート先が異なっていためでした。私の場合はVscodeのコード補完を元に下記のように設定していました。
import { PrismaClient } from "@prisma/client/extension";
しかし、@prisma/client/extensionは 通常のPrismaClientを利用するためのものではなく、この指定ではPrisma Clientが正しく初期化されません。
解決方法
インポート先を正しいものに修正します。
今回はAPIフレームワークとしてHonoを使用していましたが、Prismaの公式ドキュメントにも正しい使用方法が記載されています。
import { PrismaClient } from "./generated/prisma/client.js";
終わりに
公式ドキュメントを確認すると、しっかりと記載されている内容でした。
VS Codeのコード補完は非常に便利ですが、補完された内容をそのまま信じず、一度立ち止まって確認することの大切さを改めて感じました。
参考
『Prismaを導入しようとしたら、公式の罠にはめられた』Qiita