LoginSignup
14
20

More than 5 years have passed since last update.

expressで設定ファイルを読み込む(+環境毎に切り替える)

Last updated at Posted at 2018-04-10

いくつかの方法があるようですが、標準機能で事足りるようです。

参考

大変参考になりました。

基本

expressはapp.get('env')で環境(NODE_ENVの内容)が取得できる。
下記のようなexpressを利用するjsを書いて実行します。

app.js
var express = require('express');
var app = express();

//環境を表示
console.log(app.get('env'));

標準ではdevelopmentが返る。

development

NODE_ENVの値は起動時に(も)設定できる

起動時コマンドの頭につけると読み込まれる。

$ NODE_ENV=production node app.js

production

設定ファイルを用意する

設定用のjson(config.json)を作成し、環境毎に値を設定する。

config.json
{
    "development": {
        "host": "test-server"
    },
    "production" : {
        "host": "honban-server"
    }
}

環境毎に変数を見てみる

app.js
var express = require('express');
var app = express();

//環境を表示
console.log(app.get('env'));
//configファイルから環境に応じた内容を取得
var config = require('./config.json')[app.get('env')];

//表示
console.log(config.host);

PM2を利用した場合

pm2を利用した場合は頭に環境変数を付けるという形式では動かないようです。

参考

設定ファイル

pm2用の設定ファイルをカレントに作成し、

pm2.config.json
{
  "name" : "App_Name",
  "script" : "./index.js",
  "env": {
    "NODE_ENV" : "development"
  },
  "env_staging": {
    "NODE_ENV" : "staging"
  },
  "env_production": {
    "NODE_ENV" : "production"
  }
}

起動

設定ファイルと環境を指定して起動させます。

pm2 start pm2.config.json --env staging  
14
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
20