Node.js
Miljö
Sök…
Åtkomst till miljövariabler
process.env
returnerar ett objekt som innehåller användarmiljön.
Det returnerar ett objekt som det här:
{
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'
Om du ställer in miljövariabeln FOO
till foobar
kommer den att vara tillgänglig med:
process.env.FOO // 'foobar'
process.argv kommandoradsargument
process.argv är en matris som innehåller kommandoradsargumenten. Det första elementet kommer att vara node
, det andra elementet är namnet på JavaScript-filen. De nästa elementen är alla ytterligare kommandoradsargument.
Kodsexempel:
Output summan av alla kommandoradsargument
index.js
var sum = 0;
for (i = 2; i < process.argv.length; i++) {
sum += Number(process.argv[i]);
}
console.log(sum);
Exaple för användning:
node index.js 2 5 6 7
Utgången blir 20
En kort förklaring av koden:
Här i för loop for (i = 2; i < process.argv.length; i++)
slinga börjar med 2 eftersom de första två elementen i process.argv array alltid är ['path/to/node.exe', 'path/to/js/file', ...]
Konvertera till nummer Number(process.argv[i])
eftersom element i process.argv-array alltid är sträng
Använda olika egenskaper / konfiguration för olika miljöer som dev, qa, iscensättning etc.
Stora applikationer behöver ofta olika egenskaper när de körs i olika miljöer. Vi kan uppnå detta genom att överföra argument till NodeJs applikation och använda samma argument i nodprocessen för att ladda specifik miljöegenskapsfil.
Anta att vi har två fastighetsfiler för olika miljöer.
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" } }
Följande kod i applikationen kommer att exportera respektive fastighetsfil som vi vill använda.
Anta att koden finns i 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;
}
}
});
Vi ger argument till ansökan som följande
node app.js env=dev
om vi använder process manager som för evigt än så enkelt som
forever start app.js env=dev
Hur man använder konfigurationsfilen
var env= require("environment.js");
Laddar miljöegenskaper från en "fastighetsfil"
- Installera egenskaper läsare:
npm install properties-reader --save
- Skapa en katalog-env för att lagra dina fastighetsfiler:
mkdir env
- Skapa Communities.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;
}
}
});
- Exempel på fil.egenskaper för fastighetsegenskaper:
# Dev properties
[main]
# Application port to run the node server
app.port=8080
[database]
# Database connection to mysql
mysql.host=localhost
mysql.port=2500
...
- Exempel på användning av de laddade egenskaperna:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
var someVal = properties.get('main.app.port');
- Starta expressservern
npm start env=development
eller
npm start env=production