Node.js
Umgebung
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