Node.js
Milieu
Zoeken…
Toegang tot omgevingsvariabelen
De eigenschap process.env
retourneert een object dat de gebruikersomgeving bevat.
Het retourneert een object als dit:
{
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'
Als u omgevingsvariabele FOO
op foobar
zet, is deze toegankelijk met:
process.env.FOO // 'foobar'
process.argv opdrachtregelargumenten
process.argv is een array met de opdrachtregelargumenten. Het eerste element zal een node
, het tweede element zal de naam van het JavaScript-bestand zijn. De volgende elementen zijn eventuele aanvullende opdrachtregelargumenten.
Codevoorbeeld:
Uitvoersom van alle opdrachtregelargumenten
index.js
var sum = 0;
for (i = 2; i < process.argv.length; i++) {
sum += Number(process.argv[i]);
}
console.log(sum);
Gebruik Exaple:
node index.js 2 5 6 7
Uitgang is 20
Een korte uitleg van de code:
Hier in for lus for (i = 2; i < process.argv.length; i++)
begint de lus met 2 omdat de eerste twee elementen in de array process.argv altijd ['path/to/node.exe', 'path/to/js/file', ...]
Converteren naar nummer Number(process.argv[i])
omdat elementen in de array process.argv altijd string zijn
Verschillende eigenschappen / configuratie gebruiken voor verschillende omgevingen zoals dev, qa, enscenering etc.
Grootschalige toepassingen hebben vaak verschillende eigenschappen nodig wanneer ze in verschillende omgevingen worden uitgevoerd. we kunnen dit bereiken door argumenten door te geven aan de NodeJs-toepassing en hetzelfde argument in het knooppuntproces te gebruiken om een specifiek eigenschappenbestand voor de omgeving te laden.
Stel dat we twee eigenschappenbestanden hebben voor verschillende omgevingen.
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" } }
De volgende code in de toepassing exporteert het respectieve eigenschappenbestand dat we willen gebruiken.
Stel dat de code in environment.js is
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;
}
}
});
We geven argumenten aan de toepassing als volgt
node app.js env=dev
als we procesmanager voor altijd gebruiken dan is het zo simpel als
forever start app.js env=dev
Hoe het configuratiebestand te gebruiken
var env= require("environment.js");
Omgevingseigenschappen laden vanuit een "eigenschappenbestand"
- Installatie-eigenschappen lezer:
npm install properties-reader --save
- Maak een map env om uw eigenschappenbestanden op te slaan:
mkdir env
- Maak omgevingen.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;
}
}
});
- Voorbeeld van eigenschappenbestand ontwikkeling.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
...
- Voorbeeldgebruik van de geladen eigenschappen:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
var someVal = properties.get('main.app.port');
- De express-server starten
npm start env=development
of
npm start env=production