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?

モジュール '"@prisma/client"' にエクスポートされたメンバー 'PrismaClient' がありません。で詰まったログ

Last updated at Posted at 2025-05-21

背景

「AI駆動開発や!」と息巻いて環境構築からAIに頼って理解なく進んだ結果、公式ドキュメントを追っていれば引っかからないような問題に直面してしまいました。
初歩的内容になるが、同じようなところで詰まる人が少なくなるように以下にログを残します。

以下、
@prisma/client が存在するのに PrismaClient やモデルが import できない現象に悩まされたので、解決パターンを整理。

結論

Prisma の schema.prismagenerator clientoutput を指定していた のが原因。
これにより @prisma/client に Prisma Client のコードが生成されず、型エラーが発生していた。


環境構成

  • 技術スタック
    • pnpm
    • prisma
    • NextJs (今回はあまり関係ないかも)

以下のような構成です。

projectName/
├── pnpm-workspace.yaml
├── backend/  ← Prisma 定義・使用場所
│   ├── prisma/
│   │   └── schema.prisma
│   ├── src/
│   │   └── tasks.service.ts (← PrismaClient を使いたい)
├── frontend/
└── infra/

起きていた問題

import { PrismaClient } from '@prisma/client'

のように書いているのに、以下のようなエラーが発生:

Cannot find module '@prisma/client' or its corresponding type declarations.

原因

schema.prisma に以下のような設定があった:

generator client {
  provider = "prisma-client-js"
  output   = "../node_modules/.prisma/client"
}

これは Prisma Client を通常の @prisma/client ではなく、別フォルダ(.prisma/client)に出力する指定です。

結果として:

  • @prisma/client は存在するが、中身が空に近い状態
  • 型定義も PrismaClient の実体も import できない
  • tsconfig やパス設定をいくら調整しても解決しない

解決策

1. schema.prisma を修正する

generator client {
  provider = "prisma-client-js"
- output   = "../node_modules/.prisma/client"
}

output 行を削除。

問題解決のために以下を再実行、と検索結果として出たりするのですが、私の場合は関係ありませんでした(問題の本質をちゃんと見極めるためにも、使っているものの理解は大事ですね💦)。

pnpm install
npx prisma generate

2. Prisma Client を再生成

cd backend
pnpm prisma generate

これで正しく @prisma/client に PrismaClient とモデルの型が出力された。


outputの用途は?

  • Prisma Client を複数のサービスで共有したい場合のみ output を活用すべき。

📝 まとめ

問題 原因 解決方法
@prisma/client はあるのに使えない output によって生成先が変わっていた output を削除して prisma generate

補足

この問題とは直接関係ないのですが、以下の修正も必要だったので補足として記載しておきます。

ts.config.jsonのcompilerOptionsに以下を追加

{
    "compilerOptions" : {
        "baseUrl": ".",
        "paths": {
          "@prisma/client": ["node_modules/@prisma/client"]
        }
    }
}

同じ問題で悩んでいる方の参考になれば幸いです!

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?