【保存版】Node.js環境変数の設定:.envファイル、dotenvモジュール、その他
Node.jsで環境変数を設定する方法
コマンドラインから設定
export 変数名=値
上記のコマンドを実行することで、現在のシェル内で環境変数が設定されます。ただし、この方法は永続的な設定ではなく、シェルを閉じると環境変数は消去されます。
.envファイルとdotenvモジュールを使用
以下の手順で、.envファイルとdotenvモジュールを使用して、永続的に環境変数を設定することができます。
手順1:.envファイルを作成する
プロジェクトのルートディレクトリに.env
という名前のファイルを作成し、設定したい環境変数とその値をキー-バリュー形式で記述します。
変数名=値
例
DB_HOST=localhost
DB_USER=username
DB_PASSWORD=password
手順2:dotenvモジュールをインストールする
以下のコマンドを実行して、dotenvモジュールをインストールします。
npm install dotenv
アプリケーションのJavaScriptファイルの先頭で、dotenvモジュールを読み込みます。
require('dotenv').config();
手順4:環境変数を使用する
process.envオブジェクトを使用して、設定した環境変数にアクセスすることができます。
const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPassword = process.env.DB_PASSWORD;
console.log(`DB_HOST: ${dbHost}`);
console.log(`DB_USER: ${dbUser}`);
console.log(`DB_PASSWORD: ${dbPassword}`);
補足
.env
ファイルは、通常Gitなどのバージョン管理システムで管理対象から除外します。- 複数の環境(開発環境、本番環境など)で異なる環境変数を使用する場合は、それぞれの環境用の
.env
ファイルを用意することができます。 - dotenvモジュールは、以下の機能を提供します。
.env
ファイルが存在しない場合や読み込みに失敗した場合にエラーを発生させる.env
ファイル内のコメント行を無視する
.envファイル
DB_HOST=localhost
DB_USER=username
DB_PASSWORD=password
PORT=3000
app.js
require('dotenv').config();
const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPassword = process.env.DB_PASSWORD;
const port = process.env.PORT;
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log(`DB_HOST: ${dbHost}`);
console.log(`DB_USER: ${dbUser}`);
console.log(`DB_PASSWORD: ${dbPassword}`);
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
実行
以下のコマンドを実行して、サーバーを起動します。
node app.js
サーバーが起動すると、http://localhost:3000
にアクセスすることで、以下のメッセージが表示されます。
Hello, World!
このコードでは、以下のことが行われています。
.env
ファイルから環境変数を読み込みます。- 環境変数を使用して、データベース接続情報やサーバーのポート番号などの設定を取得します。
- Expressフレームワークを使用して、Webサーバーを作成します。
/
エンドポイントにアクセスしたときに、Hello, World!
メッセージを返します。
このサンプルコードを参考に、自分のアプリケーションで環境変数を設定してください。
Node.jsで環境変数を設定するその他の方法
process.envオブジェクトを使用する
process.env.変数名 = 値;
この方法を使用して、任意のタイミングで環境変数を設定することができます。ただし、この方法で設定した環境変数は、その後のプロセスでのみ有効となります。
プロセス起動時に設定する
以下のコマンドを使用して、プロセス起動時に環境変数を設定することができます。
node --env 変数名=値 script.js
この方法を使用して、スクリプトの実行中にのみ有効な環境変数を設定することができます。
PM2などのプロセス管理ツールを使用すると、起動時に設定する環境変数を設定することができます。
Cloud FoundryなどのPaaSを使用すると、プラットフォーム側で環境変数を設定することができます。
- 永続的に環境変数を設定したい場合は、
.env
ファイルとdotenvモジュールを使用するのが一般的です。 - 任意のタイミングで環境変数を設定したい場合は、
process.env
オブジェクトを使用します。 - プロセス起動時にのみ有効な環境変数を設定したい場合は、プロセス起動時に設定します。
- PM2などのプロセス管理ツールを使用している場合は、そのツールで設定します。
node.js environment-variables