概要: このチュートリアルでは、Node.jsの`process`モジュールの`process.env`プロパティを使用して環境変数を取得する方法を学習します。
node.js processモジュールの紹介
`process`はNode.jsのコアモジュールです。`process`モジュールには、すべての環境変数を含む`env`プロパティがあります。
Windowsで環境変数を設定するには、`SET`コマンドを使用します。例:
SET NODE_ENV=development
Code language: JavaScript (javascript)
macOSまたはLinuxでは、`EXPORT`コマンドを使用します。
EXPORT NODE_ENV=development
Code language: JavaScript (javascript)
この構文では、`NODE_ENV`は`'development'`という値を持つ環境変数です。
Node.jsで`NODE_ENV`にアクセスするには、このように`process.env`を使用します。
process.env.NODE_ENV
Code language: JavaScript (javascript)
この例では、`process.env.NODE_ENV`は文字列`'development'`を返します。
`NODE_ENV`が設定されていない場合、`process.env.NODE_ENV`は`undefined`を返します。
次のステートメントは、`論理OR演算子`を使用して、現在のNode.js環境、または`NODE_ENV`が設定されていない場合は`development`を返します。
const nodeEnv = process.env.NODE_ENV || 'development';
Code language: JavaScript (javascript)
データベースのユーザー名やパスワードなどの資格情報は、環境変数に保存するのが良い習慣です。
Node.js `process.env`の使用例を見てみましょう。
環境変数を使用して資格情報を安全に保存する
次の例は、`process.env`を使用して現在のNode.js環境にアクセスし、それに応じて設定を読み込む方法を示しています。
プロジェクト構造は以下のようになります。
├── config
| ├── app.js
| ├── development.js
| └── production.js
├── index.js
└── package.json
Code language: plaintext (plaintext)
まず、`env`という名前の新しいフォルダを作成します。
次に、`npm init`コマンドを実行して新しいパッケージを初期化します。
npm init --yes
Code language: JavaScript (javascript)
次に、プロジェクトルートディレクトリ内に`config`という名前の新しいフォルダを作成します。
mkdir config
Code language: JavaScript (javascript)
次に、`config`フォルダに`app.js`、`development.js`、`production.js`の3つのファイルを作成します。`development.js`は開発環境でのデータベースの資格情報を格納します。
module.exports = {
database: {
host: "localhost",
port: 27017,
username: "admin",
password: "Password1",
},
};
Code language: JavaScript (javascript)
`production.js`ファイルは`development.js`と同じ情報を格納しますが、環境変数を使用します。
module.exports = {
database: {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
},
};
Code language: JavaScript (javascript)
本番環境では、環境変数`DB_HOST`、`DB_PORT`、`DB_USERNAME`、`DB_PASSWORD`を設定する必要があります。
機密情報を`production.js`ファイルに保存して公開リポジトリにコミットすると、アプリケーションのセキュリティが危険にさらされることに注意してください。
`app.js`は、現在のNode.js環境に応じて`production.js`または`development.js`を必要とします。
let config;
const nodeEnv = process.env.NODE_ENV || "development";
if (nodeEnv === "devlopment") {
config = require("./development.js");
} else {
config = require("./production.js");
}
module.exports = config;
Code language: JavaScript (javascript)
次に、`index.js`ファイルで`app.js`から設定情報をロードします。
const config = require("./config/app.js");
console.log(config);
Code language: JavaScript (javascript)
環境変数を使用して実行するコードを制御する
開発環境では実行するが、本番環境では実行しないコードを実行したい場合があります。
たとえば、開発環境ではデバッグ情報を表示するが、本番環境では表示しないようにしたい場合があります。
そのためには、`process.env`を使用して`DEBUG`環境変数にアクセスできます。例:
まず、`debug.js`という新しいモジュールを作成し、`DEBUG`が設定されている場合にのみ情報をログ出力する関数を定義します。
module.exports = (data, level = "info") => {
if (!process.env.DEBUG) return;
switch (level) {
case "info":
console.info(data);
break;
case "error":
console.error(data);
break;
case "warning":
console.warn(data);
break;
default:
console.log(data);
}
};
Code language: JavaScript (javascript)
次に、`index.js`ファイルに`debug.js`をロードします。
const debug = require("./debug");
Code language: JavaScript (javascript)
次に、コンソールにいくつかのデバッグ情報を表示します。
const debug = require("./debug");
debug("The app is starting....");
Code language: JavaScript (javascript)
`DEBUG`環境変数をtrueに設定すると、出力が表示されます。
まとめ
- `process`はNode.jsのコアモジュールです。`process.env`プロパティには、すべての環境変数が保持されます。
- 機密情報を環境変数に格納し、`process.env`を使用してアクセスします。