5

Установка переменных окружения для доступа в Node.js

12

Я пытаюсь следовать уроку, в котором говорится:

Существует несколько способов загрузки учетных данных:

  1. Загрузка из переменных окружения,
  2. Загрузка из JSON-файла на диске.

Ключи должны быть следующими:

USER_ID, USER_KEY

Это означает, что если вы правильно установите переменные окружения, вам не нужно будет управлять учетными данными в вашем приложении вообще.

На основе некоторых поисков в Google, похоже, что мне нужно установить переменные в process.env. Как и где мне следует установить эти учетные данные? Приведите пример, пожалуйста.

5 ответ(ов)

4

В данном случае переменные окружения используются для передачи учетных данных вашему приложению. USER_ID и USER_KEY можно получить через process.env.USER_ID и process.env.USER_KEY соответственно. Изменять их не нужно, просто доступайтесь к их значению.

Похоже, вам просто предоставляется возможность загружать USER_ID и USER_KEY либо из process.env, либо из указанного файла на диске.

Теперь возникает магия во время выполнения приложения.

Запуск команды USER_ID=239482 USER_KEY=foobar node app.js

передаст идентификатор пользователя 239482 и ключ пользователя как foobar. Это подходит для тестирования, однако в продакшн-окружении вам, вероятно, будет нужно настроить некоторые bash-скрипты для экспорта переменных.

2

Я настоятельно рекомендую обратить внимание на пакет dotenv.

https://github.com/motdotla/dotenv

Он несколько похож на библиотеку, упомянутую в ответе от @Benxamin, но при этом гораздо более чистый и не требует использования bash-скриптов. Также стоит отметить, что кодовая база популярна и хорошо поддерживается.

Вам просто нужно создать файл .env (который я настоятельно рекомендую игнорировать в вашем git/mercurial и т. д.):

FOO=bar
BAZ=bob

Затем в вашем файле начальной точки приложения добавьте следующую строку как можно раньше:

require('dotenv').config();

Готово! Теперь process.env будет содержать указанные переменные:

console.log(process.env.FOO);
// bar

Файл '.env' не обязателен, так что вам не нужно переживать о том, что приложение упадет при его отсутствии.

1

Вы можете установить переменную окружения через глобальную переменную процесса следующим образом:

process.env['NODE_ENV'] = 'production';

Это решение работает на всех платформах.

1

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

USER_ID='abc' USER_KEY='def' node app.js

Таким образом, переменные USER_ID и USER_KEY будут доступны вашему приложению, выполняемому с помощью node app.js. Этот способ позволяет временно задать значения переменных для сессии запуска без необходимости изменять код приложения или конфигурационные файлы.

0

Если вам нужен инструмент для управления переменными окружения, попробуйте пакет envs для npm. Он возвращает значения окружения, если они установлены. Если же переменные не заданы, вы можете указать значение по умолчанию, которое будет храниться в глобальной переменной объекта defaults, если его нет в вашем окружении.

Использование файла .env (читается как "дот ee-эн-ви") или аналогичных файлов окружения имеет множество преимуществ. Каждый пользователь может управлять своими конфигурациями. Вы можете развертывать разные окружения (например, dev, stage, prod) в облачные сервисы с их собственными настройками окружения. Кроме того, вы можете задать разумные значения по умолчанию.

В вашем файле .env каждая строка представляет собой запись, например:

NODE_ENV=development
API_URL=http://api.domain.com
TRANSLATION_API_URL=/translations/
GA_UA=987654321-0
NEW_RELIC_KEY=hi-mom
SOME_TOKEN=asdfasdfasdf
SOME_OTHER_TOKEN=zxcvzxcvzxcv

Обратите внимание, что не следует включать файл .env в ваш репозиторий контроля версий (добавьте его в файл .gitignore).

Чтобы получить переменные из файла .env в ваше окружение, вы можете использовать bash-скрипт, который выполнит аналог команды export NODE_ENV=development прямо перед запуском вашего приложения.

#!/bin/bash
while read line; do export "$line";
done < .env

А затем это можно использовать в вашем JavaScript приложении:

var envs = require('envs');

// Если NODE_ENV не задан, 
// то приложение будет считать, что это продакшен по умолчанию.
app.set('environment', envs('NODE_ENV', 'production')); 

// Примеры использования:
app.set('ga_account', envs('GA_UA'));
app.set('nr_browser_key', envs('NEW_RELIC_KEY'));
app.set('other', envs('SOME_OTHER_TOKEN'));

Таким образом, вы сможете легко управлять переменными окружения в своем приложении!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь