Prisma で「@prisma/client did not initialize yet」が解決できない(prisma generate 未実行)
Prisma Client がまだ生成されていないと @prisma/client did not initialize yet が出る。
スキーマ変更後やデプロイ時の依存インストール後に prisma generate を実行し、生成物を最新化すれば解消する。
#prisma#generate#client
公開:
要約
@prisma/client did not initialize yet. Please run "prisma generate" は、Prisma Client のコードがまだ生成されていない状態でクライアントを import したときに出る。
Prisma はスキーマ(schema.prisma)から型付きクライアントを prisma generate で生成する設計のため、生成ステップが抜けると初期化前として弾かれる。
スキーマ変更後やデプロイ時の依存インストール後に prisma generate(公式: Generating Prisma Client)を走らせれば解消する。
よくある原因
schema.prismaを変更した後にprisma generateを実行していない。- デプロイや CI で依存をインストールしただけで generate が走らず、生成物が存在しない。
- monorepo やカスタム
output設定で、生成物の出力先と import 元がずれている。 - Docker ビルド時に generate せず本番起動している。
なお Prisma ORM v7 以降は generator の output 指定が必須になり、import 元が生成先パスへ変わる点にも注意する。
解決策
1. prisma generate を実行する
npx prisma generateスキーマを変更したら毎回必要になる。
2. postinstall / build に組み込む(デプロイ対策)
{
"scripts": {
"postinstall": "prisma generate",
"build": "prisma generate && next build"
}
}Vercel や AWS Lambda などは依存キャッシュを復元するだけで generate が走らないことがあるため、ビルド前に明示する。
3. Docker では COPY 後に generate する
COPY prisma ./prisma
RUN npx prisma generate