Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9092

Prisma を Google App Engine で使いたい場合は prisma generate の出力先を変更する

$
0
0
TL; DR schema.prisma generator client { provider = "prisma-client-js" // ここを追加するだけ output = "../src/generated/client" } // 生成先のパスを参照する import { PrismaClient } from './generated/client' 概要 Node.jsでバックエンドを書いている ORMにはPrismaを使っている インフラは Google App Engine (以下、GAE)を使う 以上の条件のとき、問題が発生したので、その解決策を残す。 問題1 prisma generate しないとクライアントが使えない prisma のクライアントを使うときは、事前にprisma generateを実行する必要がある。GAE ではインスタンス開始時に npm scripts のstartに設定したコマンドが実行されるので、startを以下のように変更した。 package.json "scripts": { "start": "prisma generate && node dist", } 問題2 GAEのファイルは read only しかし、GAEのファイルは read only であるため、prisma generateが失敗してしまった。 Error: EROFS: read-only file system, unlink '/workspace/node_modules/.prisma/client/index.js' 解決策 prisma generateの出力先はデフォルトだと、node_modules内だが、GAEはデプロイ時にインスタンス側でnpm installが走り、その後は read only になるため都合が悪い。つまり、出力先を node_modules外に変更できれば、解決する。 公式ドキュメントを読んだところ、↓を見つけた。 https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client#using-a-custom-output-path 以下のようにすれば解決した。 schema.prisma generator client { provider = "prisma-client-js" // ここを追加 output = "../src/generated/client" } PrismaClientをインポートしているコードも書き換えた。 import { PrismaClient } from './generated/client' 最後に GAE はインフラにかかる工数を大幅に削減できるメリットがあるが、自由度は低い。 ただ、その低い自由度の中でも解決策は案外見つかる。

Viewing all articles
Browse latest Browse all 9092

Latest Images

Trending Articles