2016-05-01 38 views
3

JSON設定ファイルが必要なサードパーティ製のライブラリを使用しています.Env変数をキー値として渡す必要があります。私は例えば、私は通常と同じようにそれらを含める場合:(node.js)JSONファイルで環境変数を使用する方法

"s3": { 
    "key": process.env.AWS_ACCESS_KEY_ID, 
    "secret": process.env.AWS_SECRET_ACCESS_KEY, 
    "bucket": process.env.S3_MLL_BUCKET_NAME, 
    "destination": "/backups/database", 
    "encrypt": false, 
    "region": process.env.AWS_REGION 
    } 

...私はエラーを取得する:

SyntaxError: config/s3_backup.config.json: Unexpected token p 
+0

を、それは、[通常のテスト](HTTPを渡さない場合:// jsonlint.com)それはJSONではありません。 – tadman

答えて

7

JSONは、環境変数の概念を持っていません。何あなたがができることはnode.jsモジュールとして設定ファイルを宣言することで、その後、あなたは次のように環境変数を使用することができます:

module.exports = { 
    s3: { 
    key: process.env.AWS_ACCESS_KEY_ID, 
    secret: process.env.AWS_SECRET_ACCESS_KEY, 
    bucket: process.env.S3_MLL_BUCKET_NAME, 
    destination: "/backups/database", 
    encrypt: false, 
    region: process.env.AWS_REGION 
    } 
}; 
+2

これはJSONファイルの内容と組み合わせるのはかなり簡単です: 'merge({}、defaults、config)' 'var config = require( 'config.json')'たとえば、 '関数。 – tadman

+0

私はもう少し具体的なはずでした。私が第三者のlibで作業していると言ったとき、JSONファイルを渡す必要があります。通常のjsファイルを使用できず、設定をエクスポートできません。私は、私のデプロイスクリプトの一環としてJSONファイルを生成することができたと思いますが、env変数を使用する目的はありません。回避策がないのはあまりにも一般的だと思われるので、私はプロジェクトの作者に確認します。 – Ben

+0

JSONファイルを 'JSON.stringify()'コールを介してモジュールから生成し、それをライブラリに渡すことができます。 – dtoux

関連する問題