2017-10-15 4 views
1

ここでこの回答に基づいてhttps://stackoverflow.com/a/22524056/777700全く同じ設定オプションを設定しましたが、動作しません。nodeJS開発環境とプロダクション環境設定ファイルのロード

console.log('environment: '+process.env.NODE_ENV); 

const config = require('./config/db.json')[process.env.NODE_ENV || "development"]; 

console.log(config); 

マイ./config/db.jsonファイル:

{ 
    "development":{ 
     "host":"localhost", 
     "port":"3306", 
     "username":"root", 
     "password":"", 
     "database":"dbname" 
    }, 
    "production":{ 
     "host":"production-host", 
     "port":"3306", 
     "username":"user", 
     "password":"pwd", 
     "database":"dbname" 
    } 
} 

CONSOLE.LOG出力:

私の(部分的に)ファイルapp.js

environment: development 
undefined 

とアプリがクラッシュします。どんな考え?そこにファイルがありますが、require()の[...]部分を削除するとdb.jsonファイルが出力され、未定義が出力されます。私はなっていると私は私がrequire('./config/db.json')[process.env.NODE_ENV]は私がundefinedを得れば、私require('./config/db.json')["development"]は私が戻って適切なオブジェクトを取得する場合に気づいているかを確認する()を必要と直後console.log(typeof config)を追加しようとしました

EDIT

バージョン:

nodeJS 6.11.4 
express 4.16.2 
+0

あなたのNODE_ENV環境値を定義していないように思われるので教えてください... –

+0

これはbashrcファイルにあるか、この '' 'NODE_ENV =開発ノードapp.js' '' –

答えて

0

さらにデバッグしてオンラインで検索したところ、最終的に解決策が見つかりました。問題は私がWindowsマシン上にいて、私の "dev"コマンドがSET NODE_ENV=development && nodemon server.jsのように見える間にnpm run devコマンドを使用していたことです。

経験豊富な目は、変数developmentの後ろにスペースを追加しました& &、前スペースに気づくでしょう、私はと比較するた変数は"development "なく"development"私が考えていたようでした。

他の質問からの元の回答は機能し、適切な設定を読み込みます!

0

あなたが変数として設定をエクスポートする必要があります

const config = { 
    "development":{ 
     "host":"localhost", 
     "port":"3306", 
     "username":"root", 
     "password":"", 
     "database":"dbname" 
    }, 
    "production":{ 
     "host":"production-host", 
     "port":"3306", 
     "username":"user", 
     "password":"pwd", 
     "database":"dbname" 
    } 
}; 
module.exports = config; 

それが発見される:)

+0

JSONファイルにmodule.exportsを追加できません... –

+0

は単に.js拡張子を使用します –

0

あなたはJSON経由でそれをしたい場合は、この方法:

const fs = require('fs') 
let localConfig 

try { 
    localConfig = JSON.parse((fs.readFileSync('./config/db.json', 'utf-8')) 
} catch (e) { 
    console.log('Could not parse local config.') 
    localConfig = false 
} 

module.exports = localConfig 

You c ouldを実行し、ローカル・コンフィギュレーションがない場合は、論理を追加します。localConfigはfalseを返し、その時点で注入された環境変数を検索できます。

更新:

私はあなたが、その場合にはあなたがちょうどあなたが環境に応じて必要なキーにアクセスすることができ、自分でconfigの生産を与えていることがわかります。 localConfigをインポートして、必要なキーを使用してください。