できない.dev

Prisma で「Environment variable not found: DATABASE_URL」が解決できない

Prisma が .env の DATABASE_URL を読み込めないと、Environment variable not found: DATABASE_URL で停止する。
.env をプロジェクト直下に置き、datasource の url を env() で参照すれば解消する。

#prisma#env#database-url

公開:

要約

Environment variable not found: DATABASE_URL は、schema.prismaenv("DATABASE_URL") に対応する環境変数を Prisma が見つけられないときに出る。

Prisma CLI は .env の内容を process.env に読み込んでから動くため、.env の場所や中身がずれていると参照に失敗する。

.env をプロジェクト直下に置き、DATABASE_URL を正しく定義すれば解消する(公式: 環境変数の管理)。

よくある原因

  1. .env がプロジェクトルート(./.env)に無い、または schema と別階層にある。
  2. .envDATABASE_URL の行が無い、スペルミス、あるいはコメントアウトされている。
  3. datasource dburl が誤った参照になっている。
  4. prisma.config.ts 利用時に dotenv を読み込まず、変数が process.env に載っていない。

解決策

1. .env をルートに置き DATABASE_URL を定義する

# .env(プロジェクト直下)
DATABASE_URL="postgresql://user:pass@localhost:5432/mydb"

Prisma CLI は ./.env--schema と同じ階層 → ./prisma の順で .env を探索する。

2. schema 側で env() 参照にする

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

3. prisma.config.ts では dotenv を読み込む

import 'dotenv/config';

prisma.config.ts を使う構成では、自前で .env を読み込まないと変数が反映されない。

この記事は役立ちましたか?