Поиск…


Доступ к переменным среды

Свойство 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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow