メインコンテンツにスキップ

`.env` ファイル

Prisma ORM は、プロジェクトのルートにデフォルトの ` .env` ファイルを作成します。このファイルを置き換えるか、`prisma` フォルダーに新しいファイルを作成するか、`prisma.schema` ファイルを再配置する場合は、そのファイルと一緒に作成することができます。

`.env` ファイルの場所

Prisma CLI は、以下の場所で ` .env` ファイルを順番に探します。

  1. プロジェクトのルートフォルダー (`./.env`)
  2. `--schema` 引数で指定されたスキーマと同じフォルダーから
  3. `package.json` の `"prisma": {"schema": "/path/to/schema.prisma"}` から取得したスキーマと同じフォルダーから
  4. `./prisma` フォルダーから

手順 1. で `.env` ファイルが見つかったが、手順 2.〜4. で競合する `.env` 変数が見つかった場合、CLI はエラーをスローします。たとえば、2 つの異なる `.env` ファイルに `DATABASE_URL` 変数を指定すると、次のエラーが発生します。

Error: There is a conflict between env vars in .env and prisma/.env
Conflicting env vars:
DATABASE_URL

We suggest to move the contents of prisma/.env to .env to consolidate your env vars.

次の表は、Prisma CLI が `.env` ファイルを探す場所を示しています。

コマンドスキーマの場所チェックされる `.env` ファイルの場所(順番)
`prisma [command]``./prisma/schema.prisma``./.env`
`./prisma/.env`
`prisma [command] --schema=./a/b/schema.prisma``./a/b/schema.prisma``./.env`
`./a/b/.env`
`./prisma/.env`
`prisma [command]``"prisma": {"schema": "/path/to/schema.prisma"}``.env`
`./path/to/schema/.env`
`./prisma/.env`
`prisma [command]`スキーマがない場合(例:空のディレクトリで `prisma db pull` を実行する場合)`./.env`
`./prisma/.env`

その `.env` ファイルで定義されている環境変数は、Prisma CLI コマンドを実行すると自動的にロードされます。

警告

`.env` ファイルをバージョン管理にコミットしないでください。!

環境変数が 2 か所で定義されている場合の動作については、`dotenv` のドキュメントを参照してください。

変数の展開

`.env` ファイルに保存されている変数は、dotenv-expand で指定された形式を使用して展開できます。

`.env`
DATABASE_URL=postgresql://test:test@localhost:5432/test
DATABASE_URL_WITH_SCHEMA=${DATABASE_URL}?schema=public

これにより、`DATABASE_URL_WITH_SCHEMA` 環境変数が `postgresql://test:test@localhost:5432/test?schema=public` の値で Prisma ORM で使用できるようになります。

`.env` ファイルの *外部* で設定されている環境変数、たとえば Heroku などの PaaS で設定されているデータベース URL を展開に使用することもできます。

# environment variable already set in the environment of the system
export DATABASE_URL=postgresql://test:test@localhost:5432/test
`.env`
DATABASE_URL_WITH_SCHEMA=${DATABASE_URL}?schema=foo

これにより、`DATABASE_URL_WITH_SCHEMA` 環境変数が `postgresql://test:test@localhost:5432/test?schema=foo` の値で Prisma ORM で使用できるようになります。

例:`.env` ファイルで `DATABASE_URL` 環境変数を設定する

データベース接続 URL を環境変数からロードするのが一般的です。

// schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

`.env` ファイルに `DATABASE_URL` を設定できます。

`.env`
DATABASE_URL=postgresql://test:test@localhost:5432/test?schema=public

`datasource` ブロックで定義されたデータベースにアクセスする必要があるコマンド(例:`prisma db pull`)を実行すると、Prisma CLI は `.env` ファイルから `DATABASE_URL` 環境変数を自動的にロードし、CLI で使用できるようにします。

コードでの環境変数の使用

環境変数を実行時に評価する必要がある場合は、アプリケーションコードで手動でロードする必要があります(例:`dotenv` を使用)。

import * as dotenv from 'dotenv'

dotenv.config() // Load the environment variables
console.log(`The connection URL is ${process.env.DATABASE_URL}`)

環境変数にカスタムファイル名を使用している場合は、`dotenv` を設定してそのファイル名を使用するようにすることができます。

import * as dotenv from 'dotenv'

var envFile = path.resolve(join(__dirname, "myenv.env"))
dotenv.config({path: envFile}) // Load the environment variables
console.log(`The connection URL is ${process.env.DATABASE_URL}`)

環境ファイル全体で変数を展開する必要がある場合は、さらに `dotenv-expand` を使用できます。

import * as dotenv from 'dotenv'
const dotenvExpand = require('dotenv-expand')

var envFile = path.resolve(join(__dirname, "myenv.env"))
var mySqlEnv = dotenv.config({path: envFile})
dotenvExpand.expand(mySqlEnv)