Prisma で「Cannot find module '@prisma/client'」が出る時の復旧チェックリスト
Prisma を使った開発中に「Cannot find module '@prisma/client'」というエラーに遭遇したことはありませんか。
このエラーは、Prisma Client が正しく生成されていない、またはインストールされていない場合に発生します。本記事では、このエラーの原因から具体的な復旧手順まで、段階的に解説していきますので、エラー解決の参考にしていただければと思います。
背景
Prisma は、Node.js と TypeScript のための ORM ツールで、データベース操作を型安全に行えることが大きな魅力です。
Prisma の仕組みを理解することで、エラーの原因も見えてきますね。
mermaidflowchart TD
schema["schema.prisma<br/>(スキーマ定義)"] -->|prisma generate| client["@prisma/client<br/>(自動生成)"]
client -->|import| app["アプリケーション<br/>コード"]
schema -->|prisma migrate| db[("データベース")]
app -->|クエリ実行| db
Prisma の基本構成では、schema.prismaファイルにデータモデルを定義し、prisma generateコマンドを実行することで、型安全な Prisma Client が自動生成されます。
この Prisma Client はnode_modules/@prisma/clientディレクトリに配置され、アプリケーションコードからimport { PrismaClient } from '@prisma/client'としてインポートして使用するのが一般的な流れです。
データベース操作はすべてこのクライアントを経由して行われるため、Prisma Client が正しく生成されていないと、アプリケーションは動作しません。
課題
「Cannot find module '@prisma/client'」エラーは、以下のような状況で発生することがあります。
初めて Prisma をプロジェクトに導入した際、あるいは他の開発者が作成したプロジェクトをクローンした直後など、様々なタイミングで遭遇する可能性があるでしょう。
mermaidflowchart LR
trigger["トリガー"] --> case1["新規プロジェクト<br/>セットアップ"]
trigger --> case2["git clone後<br/>の環境構築"]
trigger --> case3["依存関係<br/>更新後"]
trigger --> case4["node_modules<br/>削除後"]
case1 --> error["Error: Cannot find<br/>module '@prisma/client'"]
case2 --> error
case3 --> error
case4 --> error
エラーが発生する主な原因
| # | 原因 | 詳細 |
|---|---|---|
| 1 | Prisma Client の未生成 | prisma generateコマンドが実行されていない |
| 2 | パッケージの未インストール | yarn installが実行されていない、または失敗している |
| 3 | node_modules の破損 | キャッシュの問題や不完全なインストール |
| 4 | バージョン不整合 | Prisma のバージョンが複数混在している |
| 5 | ビルド環境の問題 | CI/CD 環境や Docker コンテナ内での設定ミス |
このエラーメッセージは以下のような形で表示されます。
typescriptError: Cannot find module '@prisma/client'
Require stack:
- /path/to/your/project/src/index.ts
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
at Function.Module._load (internal/modules/cjs/loader.js:667:27)
エラーコードとしてはMODULE_NOT_FOUNDが返され、Node.js がモジュールを見つけられない状態を示しています。
解決策
このエラーを解決するには、段階的なチェックリストに沿って対処することが効果的です。
以下の手順を上から順番に試していくことで、ほとんどのケースで問題を解決できるでしょう。
mermaidstateDiagram-v2
[*] --> Check1: エラー発生
Check1: パッケージ確認
Check2: generate実行
Check3: 再インストール
Check4: キャッシュクリア
Check5: バージョン確認
Check1 --> Check2: package.json確認OK
Check2 --> Check3: generate実行済み
Check3 --> Check4: 再インストール済み
Check4 --> Check5: クリア済み
Check5 --> [*]: 解決
Check1 --> [*]: 解決
Check2 --> [*]: 解決
Check3 --> [*]: 解決
Check4 --> [*]: 解決
解決手順の全体像
各ステップで問題が解決したかを確認しながら進めていくことで、無駄な作業を避けられます。
| # | ステップ | 実行コマンド | 確認項目 |
|---|---|---|---|
| 1 | パッケージ存在確認 | - | package.json に prisma の記載があるか |
| 2 | 依存関係インストール | yarn install | node_modules が生成されたか |
| 3 | Prisma Client 生成 | yarn prisma generate | @prisma/client が生成されたか |
| 4 | node_modules 再構築 | yarn cache clean && yarn install | クリーンな状態で再インストール |
| 5 | バージョン整合性確認 | yarn list @prisma/client | バージョンが一致しているか |
それぞれの手順について、具体的なコマンドと確認方法を見ていきましょう。
具体例
ステップ 1: package.json の確認
まず最初に、プロジェクトの package.json ファイルで Prisma が正しく定義されているかを確認します。
以下のように、devDependencies と dependencies の両方に Prisma 関連のパッケージが含まれている必要があります。
json{
"devDependencies": {
"prisma": "^5.0.0"
},
"dependencies": {
"@prisma/client": "^5.0.0"
}
}
上記のように、prisma(CLI)は devDependencies に、@prisma/client(ランタイム)は dependencies に配置するのが推奨されています。
バージョン番号は必ず一致させることが重要で、不整合があると予期しないエラーの原因になるでしょう。
ステップ 2: 依存関係のインストール
package.json の確認ができたら、依存関係をインストールします。
bashyarn install
このコマンドにより、package.json に記載されたすべてのパッケージが node_modules ディレクトリにインストールされます。
インストールが完了したら、以下のコマンドで Prisma が正しくインストールされたかを確認しましょう。
bashyarn prisma --version
バージョン情報が表示されれば、Prisma CLI のインストールは成功しています。
ステップ 3: Prisma Client の生成
次に、Prisma Client を生成するコマンドを実行します。
bashyarn prisma generate
このコマンドは、schema.prisma ファイルを読み込んで、型定義を含む Prisma Client のコードを自動生成するものです。
実行すると以下のような出力が表示されるはずです。
textEnvironment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
✔ Generated Prisma Client (5.0.0) to ./node_modules/@prisma/client in 123ms
「Generated Prisma Client」というメッセージが表示されれば、生成は成功しています。
生成されたファイルはnode_modules/@prisma/clientディレクトリに配置され、以下のような構造になっているでしょう。
textnode_modules/@prisma/client/
├── index.d.ts(型定義ファイル)
├── index.js(実装ファイル)
└── ...その他の生成ファイル
ステップ 4: node_modules のクリーンアップと再インストール
上記の手順で解決しない場合は、node_modules と Yarn のキャッシュをクリアして、完全にクリーンな状態から再インストールを行います。
まず、既存の node_modules ディレクトリを削除しましょう。
bashrm -rf node_modules
次に、Yarn のキャッシュをクリアします。
bashyarn cache clean
そして、lock ファイルも削除して依存関係を再解決させます。
bashrm yarn.lock
最後に、依存関係を再インストールします。
bashyarn install
再インストール後、もう一度 Prisma Client を生成しましょう。
bashyarn prisma generate
この一連の手順により、キャッシュの破損や依存関係の不整合によるエラーを解消できます。
ステップ 5: バージョンの確認と統一
複数の Prisma バージョンが混在している場合、エラーが発生することがあります。
以下のコマンドで、インストールされている Prisma のバージョンを確認しましょう。
bashyarn list @prisma/client
yarn list prisma
出力結果で複数のバージョンが表示される場合は、package.json で明示的にバージョンを指定します。
json{
"devDependencies": {
"prisma": "5.0.0"
},
"dependencies": {
"@prisma/client": "5.0.0"
}
}
バージョンを固定したら、再度クリーンインストールを実行してください。
bashyarn cache clean && rm -rf node_modules && yarn install
yarn prisma generate
これで、バージョンの不整合によるエラーも解消されるはずです。
ステップ 6: TypeScript プロジェクトでの追加確認
TypeScript を使用している場合は、tsconfig.json の設定も確認が必要になります。
以下のように、moduleResolution が適切に設定されているか確認しましょう。
json{
"compilerOptions": {
"moduleResolution": "node",
"esModuleInterop": true,
"skipLibCheck": true
}
}
特にmoduleResolutionがnodeに設定されていないと、モジュールの解決がうまくいかない場合があります。
また、@prisma/clientの型定義を確実に読み込むために、以下の設定も推奨されるでしょう。
json{
"compilerOptions": {
"types": ["node"]
}
}
ステップ 7: Docker 環境での対処
Docker 環境で開発している場合は、コンテナ内で Prisma Client が生成されているかを確認する必要があります。
Dockerfile に以下のような記述を追加しましょう。
dockerfileFROM node:18-alpine
WORKDIR /app
# 依存関係のコピーとインストール
COPY package.json yarn.lock ./
RUN yarn install
# スキーマファイルのコピー
COPY prisma ./prisma/
# Prisma Clientの生成
RUN yarn prisma generate
# アプリケーションコードのコピー
COPY . .
重要なのは、yarn prisma generateをCOPY . .の前に実行することです。
これにより、アプリケーションコードが Prisma Client に依存する前に、確実に生成が完了します。
docker-compose.yml を使用している場合は、以下のようにコマンドを指定することもできるでしょう。
yamlversion: '3.8'
services:
app:
build: .
command: sh -c "yarn prisma generate && yarn start"
volumes:
- ./prisma:/app/prisma
ステップ 8: CI/CD 環境での対処
GitHub Actions や GitLab CI などの CI/CD 環境では、ビルドステップで Prisma Client の生成を明示的に実行する必要があります。
GitHub Actions の場合は、以下のようなワークフローを設定しましょう。
yamlname: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
次に、依存関係のインストールと Prisma Client の生成を行います。
yaml- name: Install dependencies
run: yarn install
- name: Generate Prisma Client
run: yarn prisma generate
- name: Run tests
run: yarn test
この順序を守ることで、テスト実行前に必ず Prisma Client が生成されるようになります。
キャッシュを活用することで、ビルド時間を短縮することもできるでしょう。
yaml- name: Cache node modules
uses: actions/cache@v3
with:
path: |
node_modules
~/.cache/yarn
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
エラーパターン別の解決フロー
実際のエラーメッセージから、どのステップを重点的に実施すべきかを判断できます。
| # | エラーメッセージ | 推奨される対処 |
|---|---|---|
| 1 | Cannot find module '@prisma/client' | ステップ 2, 3 を実施 |
| 2 | PrismaClient is unable to be run in the browser | 環境変数の確認、サーバーサイドでの実行を確認 |
| 3 | @prisma/client did not initialize yet | ステップ 3 を再実行 |
| 4 | The postinstall script failed | ステップ 4 でクリーンインストール |
| 5 | prisma generate - command not found | ステップ 1, 2 を確認 |
予防策とベストプラクティス
一度エラーを解決した後は、再発防止のための設定を行うことをお勧めします。
package.json に postinstall スクリプトを追加することで、依存関係インストール後に自動的に Prisma Client が生成されるようになるでしょう。
json{
"scripts": {
"postinstall": "prisma generate"
}
}
このスクリプトにより、yarn installを実行するだけで自動的にprisma generateも実行されます。
チーム開発では特に有効で、新しくプロジェクトに参加したメンバーがエラーに遭遇することを防げますね。
また、.gitignore には必ず node_modules を含めておきましょう。
textnode_modules/
.env
Prisma Client は自動生成されるファイルなので、Git で管理する必要はありません。
トラブルシューティングの追加 Tips
上記の手順でも解決しない場合は、以下の確認も行ってみてください。
権限の確認
ファイルシステムの権限が不足している場合、Prisma Client の生成に失敗することがあります。
bashls -la node_modules/@prisma/
権限が不足している場合は、以下のコマンドで修正できるでしょう。
bashsudo chown -R $USER:$USER node_modules
Node.js バージョンの確認
Prisma は特定の Node.js バージョンを要求する場合があります。
bashnode --version
推奨されるのは Node.js 16 以上で、それより古いバージョンを使用している場合はアップグレードを検討しましょう。
メモリ不足の確認
大規模なスキーマの場合、Prisma Client の生成時にメモリ不足が発生することがあります。
bashNODE_OPTIONS=--max-old-space-size=4096 yarn prisma generate
このコマンドでメモリ上限を増やすことができ、生成が成功する可能性が高まります。
まとめ
「Cannot find module '@prisma/client'」エラーは、Prisma を使用する際に頻繁に遭遇するエラーの一つです。
しかし、本記事で紹介したチェックリストに沿って対処することで、ほとんどのケースで解決できるでしょう。
解決のための重要ポイント
- package.json で Prisma のバージョンを確認し、一致させること
yarn installとyarn prisma generateを確実に実行すること- node_modules のクリーンアップで多くの問題が解決すること
- Docker・CI/CD 環境では生成タイミングに注意すること
- postinstall スクリプトで自動生成を設定すると予防になること
エラーが発生した際は、焦らず一つずつ手順を確認していくことが大切です。
この記事が、Prisma での開発をスムーズに進める手助けになれば幸いですね。
関連リンク
articlePrisma で「Cannot find module '@prisma/client'」が出る時の復旧チェックリスト
articlePrisma 読み書き分離設計:読み取りレプリカ/プロキシ/整合性モデルを整理
articlePrisma スキーマ定義チートシート:model/enum/@id/@unique/@index の最短リファレンス
articlePrisma Driver Adapters 導入手順:libSQL/Turso・Neon の最短セットアップ
articlePrisma vs Drizzle vs Kysely:DX・型安全性・最適化余地を実測比較
articlePrisma トラブルシュート大全:P1000/P1001/P1008 ほか接続系エラーの即解決ガイド
articleLodash の組織運用ルール:no-restricted-imports と コーディング規約の設計
articleRedis 7 の新機能まとめ:ACL v2/I/O Threads/RESP3 を一気に把握
articleLlamaIndex の Chunk 設計最適化:長文性能と幻覚率を両立する分割パターン
articleReact フック完全チートシート:useState から useTransition まで用途別早見表
articleLangChain × Docker 最小構成:軽量ベースイメージとマルチステージビルド
articlePython UnicodeDecodeError 撲滅作戦:エンコーディング自動判定と安全読込テク
blogiPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
blogGoogleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
blog【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
blogGoogleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
blogPixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
blogフロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
review今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
reviewついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
review愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
review週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
review新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
review科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来