Suche…


Zugriff auf Umgebungsvariablen

Die Eigenschaft process.env gibt ein Objekt zurück, das die Benutzerumgebung enthält.

Es gibt ein Objekt wie dieses zurück:

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'maciej',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/maciej',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/maciej',
  LOGNAME: 'maciej',
  _: '/usr/local/bin/node'
}
process.env.HOME // '/Users/maciej'

Wenn Sie die Umgebungsvariable FOO auf foobar , können Sie auf foobar :

process.env.FOO // 'foobar' 

Befehlszeilenargumente von process.argv

process.argv ist ein Array, das die Befehlszeilenargumente enthält. Das erste Element ist node , das zweite Element ist der Name der JavaScript-Datei. Die nächsten Elemente sind zusätzliche Befehlszeilenargumente.

Code-Beispiel:

Ausgabesumme aller Befehlszeilenargumente

index.js

var sum = 0;
for (i = 2; i < process.argv.length; i++) {
    sum += Number(process.argv[i]);
}

console.log(sum);

Verwendungsbeispiel:

node index.js 2 5 6 7

Die Ausgabe wird 20

Eine kurze Erklärung zum Code:

Hier in der for-Schleife for (i = 2; i < process.argv.length; i++) beginnt die Schleife mit 2, da die ersten beiden Elemente im process.argv-Array immer ['path/to/node.exe', 'path/to/js/file', ...]

Konvertierung in number Number(process.argv[i]) da Elemente im Array process.argv immer eine Zeichenfolge sind

Verwenden verschiedener Eigenschaften / Konfigurationen für verschiedene Umgebungen wie dev, qa, staging usw.

Große Anwendungen erfordern oft unterschiedliche Eigenschaften, wenn sie in unterschiedlichen Umgebungen ausgeführt werden. Wir können dies erreichen, indem Sie Argumente an die NodeJs-Anwendung übergeben und dasselbe Argument im Node-Prozess verwenden, um bestimmte Umgebungseigenschaftsdateien zu laden.

Angenommen, wir haben zwei Eigenschaftsdateien für unterschiedliche Umgebungen.


  • dev.json

      {
          PORT : 3000,
          DB : {
              host : "localhost",
              user : "bob",
              password : "12345"
          }
      }
    
  • qa.json

      {
              PORT : 3001,
              DB : {
                  host : "where_db_is_hosted",
                  user : "bob",
                  password : "54321"
              }
      }
    

Der folgende Code in der Anwendung wird die entsprechende Eigenschaftsdatei exportieren, die wir verwenden möchten.

Angenommen, der Code befindet sich in environment.js

process.argv.forEach(function (val, index, array) {
    var arg = val.split("=");
    if (arg.length > 0) {
        if (arg[0] === 'env') {
            var env = require('./' + arg[1] + '.json');
            module.exports = env;
        }
    }
});

Wir geben der Bewerbung folgende Argumente

node app.js env=dev

Wenn wir Prozessmanager für immer verwenden, dann ist es so einfach wie

forever start app.js env=dev

So verwenden Sie die Konfigurationsdatei

 var env= require("environment.js");

Laden von Umgebungseigenschaften aus einer "Eigenschaftendatei"

  • Eigenschaftsleser installieren:
npm install properties-reader --save
  • Erstellen Sie ein Verzeichnis env , um Ihre Eigenschaftendateien zu speichern:
mkdir env
  • Erstellen von environment.js :
process.argv.forEach(function (val, index, array) {
    var arg = val.split("=");
    if (arg.length > 0) {
        if (arg[0] === 'env') {
            var env = require('./env/' + arg[1] + '.properties');
            module.exports = env;
        }
    }
});
  • Beispiel-Eigenschaftendatei für development.properties :
# Dev properties
[main]
# Application port to run the node server
app.port=8080

[database]
# Database connection to mysql
mysql.host=localhost
mysql.port=2500
...
  • Verwendungsbeispiel der geladenen Eigenschaften:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
   
var someVal = properties.get('main.app.port');
  • Express-Server starten
npm start env=development

oder

npm start env=production


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow