Prismaで”Field does not exist on enclosing type” エラーが発生した時の解決方法

こんにちは!ヒロケイと申します。

今回は、prismaを使ってサーバーの開発をしている時に遭遇した不可解なエラーを解決する方法について紹介します。

心当たりが無いのに、このようなエラーが発生すること、ありませんか?

エラー
Invalid `prisma.User.findUnique()` invocation:
Failed to validate the query: `Field does not exist on enclosing type. `

今回このエラーの解決方法を見つけたので、記録しておきます!

こんな人が読むと役立つ!
  • ブランチを切り替えた途端、prismaのエラーが発生してしまった。。。
  • コードに何も変更は加えていないが、データベースの接続がうまくできていない?

こういった悩みを解決するために役立ちます。

それでは見ていきましょう!

解決方法

deno
deno

コードに何も変更は加えてないが、なぜかエラーが発生している。。。

こんな問題に遭遇した時は、大抵これらのコマンドで解決できます。

プロジェクトのディレクトリの最上層にて、このコマンドでnode_modulesに保管されているprismaのキャッシュを検索します。

コマンド
find . -name .prisma

そして、検索して出てきたファイルを削除してprisma generateを実行します。

コマンド
rm -rf [findコマンドで検索したファイルの相対パス]/node_modules/.prisma
rm -rf [findコマンドで検索したファイルの相対パス]/node_modules/.cache
yarn prisma generate dev

これで解決できます!

解決できなかった時に見るべき場所

上記のコマンドを実行しても、解決できない時があります。

そんな時は、データベースとの接続がうまくできているかを確認しましょう!

確認事項リスト
  • 開発環境のデータベースをDockerで動かしている場合は、ローカルのデータベースが実行されていないか確認
  • Docker Desktopは起動しているか
  • コンテナはしっかり走っている状態か

ローカルのデータベースが切ってあるか

データベースにDockerを使っている場合は、デスクトップアプリでローカルデータベースを切っている必要があります。

確認してみましょう!

Docker Desktopが起動している、かつコンテナが走っていることを確認

データベースをDockerで動かしている場合は、起動しているかの確認をしましょう!

まとめ

今回の不可解なエラーは、想定外のPrismaのキャッシュが残ってしまっていたが故のエラーでした。

この類のエラーは、monorepoで開発している時に良く遭遇するエラーのようです。

最後まで読んでくださり、ありがとうございました。

当ブログでは、プログラミング未経験者が戦力となるエンジニアとして稼ぐまでに役立つ情報をお届けしています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です