Чтение переменных среды в Node.js

Есть ли способ прочитать переменные окружения в коде Node.js?

Например, Python os.environ['HOME'].

Ответы

Ответ 1

process.env.ENV_VARIABLE

Где ENV_VARIABLE - имя переменной, к которой вы хотите получить доступ.

Смотрите Node.js docs для process.env.

Ответ 2

При использовании Node.js вы можете извлекать переменные среды по ключу из объекта process.env:

например

var mode   = process.env.NODE_ENV;
var apiKey = process.env.apiKey; // '42348901293989849243'

Вот ответ, который объяснит настройку переменных среды в node.js

Ответ 3

Если вы хотите использовать строковый ключ, сгенерированный в вашей программе Node.js, скажем, var v = 'HOME', вы можете использовать process.env[v].

В противном случае process.env.VARNAME должен быть жестко запрограммирован в вашей программе.

Ответ 4

Вы можете использовать пакет env для управления переменными среды для каждого проекта:

  • Создайте файл .env в каталоге проекта и поместите туда все свои переменные.
  • Добавьте эту строку в начало файла ввода приложения:
    require('dotenv').config();

Готово. Теперь вы можете получить доступ к своим переменным среды с помощью process.env.ENV_NAME.

Ответ 5

Чтобы получить переменные среды в Node.JS, вы можете использовать process.env.VARIABLE_NAME, но не забывайте, что назначение свойства на process.env будет неявно преобразовывать значение в строку.

Избегайте логической логики

Даже если ваш.env файл определяет переменную типа SHOULD_SEND = false или SHOULD_SEND = 0, значения будут преобразованы в строки ("false" и "0" соответственно) и не будут интерпретироваться как booleans.

if (process.env.SHOULD_SEND) {
 mailer.send();
} else {
  console.log("this won't be reached with values like false and 0");
}

Вместо этого вы должны сделать явные проверки. Ive, найденный в зависимости от названия среды, проходит долгий путь.

 db.connect({
  debug: process.env.NODE_ENV === 'development'
 });

Ответ 6

Почему бы не использовать их в каталоге Users в файле .bash_profile, чтобы вам не приходилось отправлять файлы с переменными в производство.

Ответ 7

Вы, ребята, можете также использовать библиотеку, которую я недавно написал.

Он дает вам кучу хороших параметров при чтении переменных среды, таких как:

  • фильтрует их префиксом или настраиваемой функцией фильтрации.
  • преобразование имен переменных среды в папку на верблюжьей, строчной или произвольной основе.
  • значения переменных среды синтаксиса для допустимых типов данных (int, float, bool и т.д.).

Надеюсь, вам понравится.

Вы можете проверить репозиторий для более подробной информации: https://github.com/yatki/read-env

Основной пример

Скажем, у вас есть переменные среды, начинающиеся с префикса "EXAMPLE_", как показано ниже:

EXAMPLE_OBJECT_KEY= '{"prop": "value"}',
EXAMPLE_ARRAY_KEY= '[1,2,3, "string", {"prop": "value"}, 5.2]',
EXAMPLE_TRUE_KEY= 'true',
EXAMPLE_FALSE_KEY= 'false',
EXAMPLE_INT_KEY= '5',
EXAMPLE_FLOAT_KEY= '5.2',
EXAMPLE_STRING_KEY= 'example',

ваш-app.js:

import readEnv from 'read-env';

const options = readEnv('EXAMPLE');
console.log(options);

Вывод:

{
  arrayKey: [ 1, 2, 3, 'string', { prop: 'value' }, 5.2 ],
  falseKey: false,
  floatKey: 5.2,
  intKey: 5,
  objectKey: { prop: 'value' },
  stringKey: 'example',
  trueKey: true
}

Чтение всех переменных среды, как есть:

const options = readEnv({
  transformKey: false,
  parse: false,
});