Node.js
Среда
Поиск…
Доступ к переменным среды
Свойство process.env
возвращает объект, содержащий пользовательскую среду.
Он возвращает объект, подобный этому:
{
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'
Если вы установите переменную среды FOO
в foobar
, она будет доступна с помощью:
process.env.FOO // 'foobar'
аргументы командной строки process.argv
process.argv - это массив, содержащий аргументы командной строки. Первым элементом будет node
, второй элемент будет именем файла JavaScript. Следующие элементы будут любыми дополнительными аргументами командной строки.
Пример кода:
Выводная сумма всех аргументов командной строки
index.js
var sum = 0;
for (i = 2; i < process.argv.length; i++) {
sum += Number(process.argv[i]);
}
console.log(sum);
Использование Exaple:
node index.js 2 5 6 7
Выход будет 20
Краткое описание кода:
Здесь цикл for (i = 2; i < process.argv.length; i++)
начинается с 2, потому что первые два элемента в массиве process.argv всегда являются ['path/to/node.exe', 'path/to/js/file', ...]
Преобразование в число Number(process.argv[i])
поскольку элементы в массиве process.argv всегда являются строками
Использование разных свойств / конфигурации для разных сред, таких как dev, qa, настройка и т. Д.
Крупномасштабные приложения часто нуждаются в разных свойствах при работе в разных средах. мы можем добиться этого, передав аргументы в приложение NodeJs и используя тот же аргумент в процессе узла для загрузки файла свойств среды.
Предположим, у нас есть два файла свойств для разных условий.
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" } }
Следующий код в приложении будет экспортировать соответствующий файл свойств, который мы хотим использовать.
Предположим, что код находится в 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;
}
}
});
Мы приводим аргументы для приложения, как показано ниже.
node app.js env=dev
если мы используем диспетчер процессов как навсегда, чем это так просто, как
forever start app.js env=dev
Как использовать файл конфигурации
var env= require("environment.js");
Загрузка свойств среды из файла свойств
- Установщик свойств:
npm install properties-reader --save
- Создайте каталог env для хранения ваших файлов свойств:
mkdir env
- Создать 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;
}
}
});
- Файл свойств свойства 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
...
- Пример использования загруженных свойств:
var enviorment = require('./environments');
var PropertiesReader = require('properties-reader');
var properties = new PropertiesReader(enviorment);
var someVal = properties.get('main.app.port');
- Запуск экспресс-сервера
npm start env=development
или же
npm start env=production