Prisma は import するだけで dotenv(.env) を読み込む
Published: 2023/9/27
問題
NestJS で ConfigService を、公式ドキュメントに従い設定していて、 ignoreEnvFile
のオプションを指定したにも関わらず、 process.env
に .env
のファイルが読み込まれている事象に遭遇したため、いろいろ調べていた。
原因: Prisma が勝手に dotenv/config 相当のことを行っていた
Prisma は、 node.js 側から利用するためのインターフェイスである、 @prisma/client
のパッケージを import するだけで、プロジェクトルートの .env
ファイルを、 dotenv
パッケージを利用して読み込んでいる。
`@prisma/client` magically loading `.env` file (and mutating `process.env` in the process) · Issue #15620 · prisma/prisma
Bug description On a fresh repository with just prisma and @prisma/client installed, the fact of importing @prisma/client silently loads my local .env file without letting me any chance to disable ...
github.com
現状ではこの issue は open であるため、 prisma を利用するプロジェクトでは、 dotenv はむしろ main.ts
の冒頭に import 'dotenv/config'
するなどして、 nodejs モジュールの import 順に依らず process.env
の値を確定していくことがベターなアプローチであると考えられる。
// main.ts
import 'dotenv/config'
// それ以外の全て