PrismaのDenoサポートについて
#Prisma #Deno #ORM
はじめに
最近、Deno公式などでPrismaを動かそうという試みが見かけられるのでメモしておきます
Deno Land Inc.関連での動き
bartlomieju/prisma-fresh
Bartekさんが公開されているFreshでPrismaを使用する例
deno_std/nodeを使って動かそうと試みているようです (/utils/prisma.ts)
kt3k/prisma-deno-deploy-example
kt3kさんが公開されているDeno DeployからPrisma Data Proxyクライアントを使用する例
後述するプルリクエストも参照ください (feat: add deno support for data proxy client #14250)
node: Using V8 flags when spawning a subprocess fails #2411
prisma generageがDenoのNode.js互換モードで動かせない問題について (DenoのNode.js互換モード)
Prisma公式のissue/PR
feat: add deno support for data proxy client #14250
後述する#14386のPRが作成されたため、クローズされました
prisma generateコマンドに--denoオプションのサポートを追加するPR
<output_dir>/deno.tsが追加で生成されるため、こちらをimportすることでDenoからPrisma Clientを使用できるようです
このPRでは、Prisma Data Proxyのみがサポートされる想定
feat: add deno support, alt approach #14386
prisma generate --data-proxyコマンドを拡張し、Prisma Data ProxyクライアントをDenoからも利用できるようにするPR
deno.tsというファイルが生成されるようになるため、それをDenoから利用できる
Add support for Deno #2452
2020年から立てられているissue
Bartekさんもコメントしており、DenoでPrismaを使用したい要望は結構多いようです
2022/08/01 追記) 近日中に何かしらの発表が予定されている模様...👀
2022/10/22 追記) Prisma v4.5.0がリリース
Denoの初期サポートが追加されています
現時点ではPrisma Data Proxyとの統合のみがサポートされています
クエリエンジンついては、Deno本体にNode-APIのサポートが入っているので、そちらをベースにサポートすることが検討されているようです
Denoサポートは、まだプレビュー機能という位置づけのため、本格的な使用にはまだ注意が必要そうです
以下のドキュメントではDeno Deployへのデプロイ手順が解説されています
2024/04/13 追記) 現在の状況について
現在、DenoはnpmパッケージやNode-APIなどを標準でサポートしています (Denoのnpmパッケージサポート)
そのため、もしPrismaを含め何らかのnpmパッケージを利用したい場合は、Denoのnpmパッケージサポートを介して利用すると安定しやすいと思います (Denoのnpmパッケージサポート)
議論などについては引き続きAdd support for Deno (prisma/prisma#2452)のissueで行われています
How to create a RESTful API with Prisma and Oak (Deno公式のチュートリアル)
2024/11/29 追記) Prisma v6がリリース
Deno v2との互換性の改善が行われているようです
2025/06/15
Prisma v6.8.0がリリース
prisma-client-jsからDenoのサポートが削除され、prisma-clientジェネレーターへの移行が行われているようです
その他のリソース
- Denoの公式チュートリアル