【node.js】環境変数の設定方法
環境変数とは
Node.jsの環境変数は、process.envというオブジェクトに格納されます。
環境変数というのは、アプリケーションを動作させる際の最も基本的な設定内容が入った箱のようなものです。
環境変数をJavaScriptのソースコードとは別に管理する理由としては次のような理由があります。
実務でも開発環境の状態を把握したり開発環境と本番環境で切り替える際にenvの内容を変更します。
主に使い分ける時として同じソースコードでも本番/開発時にはサーバーを変えたいとかいう時にこれで使い分けられます。
よく使われる環境変数
NODE_ENV
code:tarminal
$NODE_ENV=development node app.js
※これは開発環境の環境変数を使う時に利用されます。(あとproductionで本番環境としている人が多いみたいです)
NODE_DEBUG
code:tarminal
$NODE_DEBUG=http,node app.js
デバッグしたいモジュール名をカンマ区切りで複数指定することもできます。
ここではhttpリクエストと、app.jsについてのデバッグ情報を指定しています。
NODE_PATH
code:tarminal
$NODE_PATH=C:\Users\a\AppData\Roaming\npm\node_modules
npmモジュールを検索する場合のディレクトリ先を指定します。
複数設定する場合は;で区切ります。
今回は、「C:\Users\a\AppData\Roaming\npm\node_modules」というディレクトリ(フォルダ)を指定しています。
process.envで確認してみる
code:node.js
let key = process.env.NODE_ENV;
console.log(key);
============================================
//NODE_ENV=development という感じで環境変数の答えが返ってくるはずです
環境変数を変更する
code:tarminal
$set NODE_ENV=development
===========================
//NODE_ENV=developmentが設置されます
起動時にも変更できる
code:tarminal
$NODE_ENV=production node app.js
//または
$NODE_ENV=stage npm start
※ステージ環境(stage)
設定した後は、、、
設定ファイルを用意して環境変数ごとに使い分けるという流れになります。
設定用のjson(config.json)を作成し、環境ごとに値を使い分ける例
code:config.json
{
"development":{
"host":"test-server"
},
"production":{
"host":"honban-server"
}
}
環境ごとに変数をみてみる
code:app.js
let express = require('express');
let app = express();
//環境を表示
console.log(app.get('env'));
//config.jsonから環境に応じた内容を取り出してみる
//表示してみる
console.log(config.host);
//処理を分けることもできます
let env = process.env.NODE_ENV;
if(env=="development"){
//開発環境のみ
}
if(env == "stage"){
//本番環境のみ
}
DBのみの設定で開発本番の設定を分けたい時
configモジュールというものがあります。
code:tarminal
$npm install --save config
configモジュールは簡単にconfig/default.jsonを読み込んでくれるようになります。
まず、利用するためconfig/default.jsonを作りましょう。
code:tarminal
$mkdir config
vi config/default.json
========================
{
"db":{
"master":{
"host":"192.168.33.10",
"user":"usr",
"password":"pass",
"database":"masterdatabase"
},
"slave":{
"host":"127.0.0.1",
"user":usr",
"password":"pass",
"database":"slavedatabase"
}
},
}
例えば、開発環境向け専用の設定ファイルを作成する場合は「config/NODE_ENVに設定した値.json」を用意しておけば、そちらに書かれている内容で上書きされるみたいです。
プログラムから組み込むには、、、
code:node.js
let config = require('config');
console.log(config.db.master.host);
//192.168.33.10と返ってくるはず
参考