【Next.js】Prisma ClientはClient Componentではつかえない??

エラー

 

Next.js(App Router)でPrisma Clientを使用したところ、エラーに遭遇しました。

Componentが原因で起こったエラーっぽいですが、よくわからなかったのでまとめました!

 

バージョン

 

バージョン
Prisma 5.2.0
Prisma Client 5.2.0
Prisma Studio 0.494.0
Node.js 18.17.0
Next.js 13.4.19

 

Next.jsは、App Routerを使用していますのでご注意ください!!

 

エラー内容

 

 

 

エラー文をDeepLにかけると、

 

原因を考える

 

エラー文をそのままググってもいいサイトが見つからなかったので、エラー文の意味を考えます。

 

PrismaClientはこのブラウザ環境では実行できません。

つまり、ブラウザ側(クライアント側)ではPrisma Clientが使えないってこと??

 

エラーが出ているコンポーネントを確認してみると、
確かにClient Componentになってるな

 

Prisma のHPを確認してみると、SSRやSSG、API Routesで使えるとのこと。

CSRでは使えそうにないので、Client Componentでも使えなさそうです。

 

対応方針

 

  • Client Component内に記述しているPrisma Clientを使用する処理をAPIにする
    Route Handlersを使う
  • そのAPIをClient Componentからたたくようにする

 

やってみる

修正前

 

・Client Component

 

修正後

 

・Clinet Component

 

・API

 ⇒ ./src/app/api/user/route.ts に作成(URL:http://localhost:3000/api/user)

 

 

こんな感じでAPIを作成してそれをたたくようにしたらうまくいきましたーーー!!!

なので、やっぱりPrisma ClientはClinet Componentだと使えないみたいですね。。

 

エラー文からはブラウザでPrisma Clientが使えなさそうだったので、

APIかServer Componentで使用するしかなさそうです。

 

 

参考文献

 

Next.js Database with Prisma | Next-Generation ORM for SQL Databases
Prisma is a next-generation ORM for Node.js & TypeScript. It's the easiest way to build Next.js apps with MySQL, PostgreSQL & SQL Server databases.
Routing: Route Handlers | Next.js
Create custom request handlers for a given route using the Web's Request and Response APIs.
fetchメソッドの基本的な使い方【クエリパラメータとリクエストボディの使い分け】
Fetch APIでJSON形式のデータを送信する | GRAYCODE JavaScript
Fetch APIのAjaxを使ってJSONデータをサーバーへ送信する方法について解説します。

 

 

 

コメント

タイトルとURLをコピーしました