2017-08-11 12 views
1

私の質問はan old answer given on this questionに関連していますが、少し修正してあります。app.get( 'env')を使用して環境固有の設定を設定する

できるだけシンプルにしておきます。

私のフォルダ構造は以下の

|-- controllers 
    |-- File.js 
    |-- and many more... 
|-- routes.js 
|-- app.js 
|-- config.js 
|-- env.json (same as one in the old answer) 

関連するファイルであると仮定は

app.js

const routes = require('./routes'); 

app.set('env', process.env.NODE_ENV || 'production'); // set the environment 
app.use('/', routes); 

routes.js

が含まれています

コントローラ/ File.js

const config = require('../config'); 

exports.getFiles = (req, res, next) => { 
    // I would like to use the environment-specific (that was set in app.js) config here 
    console.log(config.facebook_app_id); 
}; 

// ... 

config.jsの

const env = require('env.json'); 

/*exports.config = function() { 
    var node_env = process.env.NODE_ENV || 'development'; 
    return env[node_env]; 
};*/ 

module.exports = env[app.get('env')]; // this would cause an error as app is not defined 

これはばかげた質問かもしれませんが、どのように私はconfig.js内すなわちapp.get('env')アプリケーション設定を使用することができますか?

答えて

2

あなたの設定ファイルのprocess.env.NODE_ENV || 'production'を解析してから、アプリケーションをインスタンス化するときに参照することができます。もう一つ考慮すべきことは、代わりにprocess.env.NODE_ENV || 'development'を使用しているため、開発者はそれらが実際に運用環境にあると言う必要があります。あなたは誤って本番

const env = require('env.json') 
module.exports = env[process.env.NODE_ENV || 'production'] 
+2

私もデフォルトとしてDEVにコメントしようとしていましたので、基本的には設定ファイルでアプリケーション設定を使用しない;-) –

+1

ををprodないを使用する必要はありません。私の最終目標は、私が行うべき場所を1つ所持することでした。 'process.env.NODE_ENV || 「生産」。しかし、[documentation](http://expressjs.com/en/api.html#app.set)によると、 'app.set()'のデフォルト値は 'process.env.NODE_ENV || 「開発」。 'development'を使うほうが良いので、うまくいくと思います。ありがとう。 – Mikey