Node.js
Środowisko
Szukaj…
Dostęp do zmiennych środowiskowych
Właściwość process.env
zwraca obiekt zawierający środowisko użytkownika.
Zwraca obiekt taki jak ten:
{
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'
Jeśli ustawisz zmienną środowiskową FOO
na foobar
, będzie ona dostępna za pomocą:
process.env.FOO // 'foobar'
Argumenty wiersza polecenia process.argv
process.argv to tablica zawierająca argumenty wiersza poleceń. Pierwszym elementem będzie node
, drugim elementem będzie nazwa pliku JavaScript. Kolejnymi elementami będą wszelkie dodatkowe argumenty wiersza poleceń.
Przykład kodu:
Suma wyjściowa wszystkich argumentów wiersza poleceń
index.js
var sum = 0;
for (i = 2; i < process.argv.length; i++) {
sum += Number(process.argv[i]);
}
console.log(sum);
Przykład użycia:
node index.js 2 5 6 7
Wyjście wyniesie 20
Krótkie wyjaśnienie kodu:
Tutaj pętla for (i = 2; i < process.argv.length; i++)
zaczyna się od 2, ponieważ pierwsze dwa elementy w tablicy process.argv zawsze to ['path/to/node.exe', 'path/to/js/file', ...]
Konwersja na liczbę Number(process.argv[i])
ponieważ elementy w tablicy process.argv zawsze mają ciąg znaków
Używanie różnych właściwości / konfiguracji dla różnych środowisk, takich jak dev, qa, inscenizacja itp.
Aplikacje na dużą skalę często wymagają różnych właściwości podczas pracy w różnych środowiskach. możemy to osiągnąć, przekazując argumenty do aplikacji NodeJs i używając tego samego argumentu w procesie węzła, aby załadować określony plik właściwości środowiska.
Załóżmy, że mamy dwa pliki właściwości dla różnych środowisk.
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" } }
Poniższy kod w aplikacji wyeksportuje odpowiedni plik właściwości, którego chcemy użyć.
Załóżmy, że kod znajduje się w 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;
}
}
});
Podajemy argumenty aplikacji, takie jak następujące
node app.js env=dev
jeśli używamy menedżera procesów tak jak zawsze, to tak proste jak
forever start app.js env=dev
Jak korzystać z pliku konfiguracyjnego
var env= require("environment.js");
Ładowanie właściwości środowiska z „pliku właściwości”
- Zainstaluj czytnik właściwości:
npm install properties-reader --save
- Utwórz env katalogu do przechowywania plików właściwości:
mkdir env
- Utwórz środowiska.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;
}
}
});
- Przykładowy plik właściwości 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
...
- Przykładowe użycie załadowanych właściwości:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
var someVal = properties.get('main.app.port');
- Uruchamianie serwera ekspresowego
npm start env=development
lub
npm start env=production