2016-05-01 12 views
3

Ich benutze eine 3rd-Party-Bibliothek, die eine JSON-Konfigurationsdatei benötigt, und ich muss einige Env-Variablen als Schlüsselwerte übergeben. Wenn ich sie, wie ich gewohnt sind zB:(node.js) Wie verwende ich Umgebungsvariablen in JSON-Datei

"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 
    } 

... bekomme ich den Fehler:

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

Wenn es nicht die [üblichen Tests] (http nicht passiert: // jsonlint.com) es ist nicht JSON. – tadman

Antwort

7

JSON hat keine Ahnung von Umgebungsvariablen. Was Sie jedoch tun, ist Ihre Konfigurationsdatei als node.js Modul zu deklarieren und dann können Sie Ihre Umgebungsvariablen wie folgt verwenden:

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

Es ist eigentlich ziemlich einfach, dies mit dem Inhalt einer JSON-Datei zu kombinieren: 'merge ({}, defaults, config)' wobei 'var config = require ('config.json')' zum Beispiel wenn du eine gute 'merge hast 'Funktion. – tadman

+0

Ich hätte etwas genauer sein sollen, als ich im OP gesagt habe, dass ich mit einer 3rd-Party-Lib arbeite, muss ich eine JSON-Datei übergeben, ich kann keine normale js-Datei verwenden und die Config exportieren. Ich vermute, dass ich die JSON-Datei nur als Teil meines Deploy-Skripts erzeugen konnte ... obwohl das den Zweck der Verwendung von env-Variablen besiegt. Ich werde mit dem Autor des Projekts nachsehen, da dies zu häufig vorkommt, um keinen Workaround zu haben. – Ben

+0

Sie können JSON-Datei über den Aufruf 'JSON.stringify()' aus dem Modul generieren und an die Bibliothek übergeben. – dtoux

Verwandte Themen