Это будет то, что параллелизм и threading для.
Переменные среды (в данном случае) используются для передачи учетных данных вашему приложению. Доступ к 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 для экспорта переменных.
Шаг 1: Добавьте переменные среды в соответствующий файл. Например, вашу промежуточную среду можно назвать .env.staging
, которая содержит переменные среды USER_ID
и USER_KEY
, специфичные для вашей промежуточной среды.
Шаг 2: В вашем package.json
файле добавьте следующее:
"scripts": {
"build": "sh -ac '. ./.env.${REACT_APP_ENV}; react-scripts build'",
"build:staging": "REACT_APP_ENV=staging npm run build",
"build:production": "REACT_APP_ENV=production npm run build",
...
}
, затем вызовите его в своем сценарии развертывания следующим образом:
npm run build:staging
Супер простая настройка и работает как очарование!
Источник: https://medium.com/@tacomanator/environments-with-create-react-app-7b645312c09d
Для пользователей Windows этот вопрос о переполнении стека и главный ответ весьма полезны в том, как устанавливать переменные environement через командную строку
Я настоятельно рекомендую посмотреть в пакет dotenv.
https://github.com/motdotla/dotenv
Это похоже на библиотека предложила в ответ от @Benxamin, но она намного чище и не требует каких-либо сценариев bash. Также стоит отметить, что база кода популярна и ухожена.
В основном вам нужен файл .env (который я настоятельно рекомендую игнорировать из вашего git / mercurial / etc):
FOO=bar
BAZ=bob
Затем в файл записи приложения поместите следующую строку как можно раньше:
require('dotenv').config();
Стрела. Готово. «process.env» теперь будет содержать перечисленные выше переменные:
console.log(process.env.FOO);
// bar
Файл «.env» не требуется, поэтому вам не нужно беспокоиться о том, что ваше приложение падает в его отсутствие.
Важно для Windows: существует множество способов установки переменных среды. Но большинство из них НЕ являются постоянными, они являются временными для текущей оболочки. (например, SET SWEDISH_CHEF="bork bork"
или $env:SWEDISH_CHEF = "bork bork"
)
Чтобы он сохранялся, используйте эту команду PowerShell: [Environment]::SetEnvironmentVariable("SWEDISH_CHEF", "bork bork", "User")
обратите внимание: третий аргумент "User"
указывает уровень (также может быть "Process"
или "Machine"
, но из того, что я нашел "User"
, на самом деле тот, который используется для process.env
)
Чтобы убедиться, что он сохраняется: запустите новый терминал, запустите node
и введите process.env.SWEDISH_CHEF
в оболочке узла для печати значения.
edit: env var, похоже, не сохраняется после перезапуска. поэтому я решил настроить его через графический интерфейс под My Computer, чтобы он сохранялся навсегда
edit2: более простой вариант - это, конечно, просто создать файл .env
в папке проекта. SWEDISH_CHEF="bork bork"
Если вы хотите вариант управления, попробуйте пакет envs npm. Он возвращает значения среды, если они установлены. В противном случае вы можете указать значение по умолчанию, которое хранится в переменной глобального объекта по умолчанию, если оно не в вашей среде.
Использование .env («dot ee-en-vee») или файлов окружения является хорошим по многим причинам. Отдельные лица могут управлять своими собственными конфигурациями. Вы можете развернуть различные среды (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 <source .env
Тогда это идет в вашем приложении javascript:
var envs = require('envs');
// If NODE_ENV is not set,
// then this application will assume it's prod by default.
app.set('environment', envs('NODE_ENV', 'production'));
// Usage examples:
app.set('ga_account', envs('GA_UA'));
app.set('nr_browser_key', envs('NEW_RELIC_BROWSER_KEY'));
app.set('other', envs('SOME_OTHER_TOKEN));
Это зависит от вашей операционной системы и вашей оболочки
. В Linux с оболочкой bash вы создаете такие переменные среды, как это (в консоли):
export FOO=bar
информация об переменных среды на ubuntu (например):
Очень хороший способ выполнения переменных окружения, которые я успешно использовал, приведен ниже:
A. Имеют разные конфигурационные файлы:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some DEV Value1',
someEnvKey2 : 'some DEV Value2'
};
..
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some QA Value1',
someEnvKey2 : 'some QA Value2'
};
ПРИМЕЧАНИЕ. значения изменяются в среде, в основном, но ключи остаются такими же.
<projectRoot>/config/dev.js
<projectRoot>/config/qa.js
<projectRoot>/config/z__prod.js
<projectRoot>/setenv.js
<projectRoot>/setenv.bat
<projectRoot>/setenv.sh
ПРИМЕЧАНИЕ. Имя prod отличается от других , поскольку он не будет использоваться всеми.
B. Установите переменные среды OS / Lambda / AzureFunction / GoogleCloudFunction из конфигурационного файла
Теперь, в идеале, эти переменные конфигурации в файле должны отображаться как переменные среды ОС (или переменные функции LAMBDA или переменные функции Azure, Google Облачные функции и т. Д.)
, поэтому мы пишем автоматизацию в ОС Windows (или других)
a) Взятие данных из переданной переменной аргумента (теперь «dev») b) прочитайте соответствующий файл ('config \ dev.js') c) устанавливает переменные среды в ОС Windows (или другом)
Например,
Содержимое setenv.bat может быть :
node setenv.js
Содержимое setenv.js может быть:
// import "process.env.ENV".js file (dev.js example)
// loop the imported file contents
// set the environment variables in Windows OS (or, Lambda, etc.)
Вот и все, ваша среда готова к использованию.
setenv qa ', все переменные окружения qa будут готовы к использованию из qa.js и готовы к использованию одной и той же програмой m (который всегда запрашивает process.env.someEnvKey1, но значение, которое он получает, является qa одним).
Надеюсь, что это поможет.
Я получил undefined после установки системы env var. Когда я помещаю APP_VERSION в пользовательский env var, я могу отображать значение из узла через process.env.APP_VERSION
Просто укажите значения env в командной строке
USER_ID='abc' USER_KEY='def' node app.js
Наслаждался хорошим инструментом для этого.
Парсирует и загружает файлы окружения (содержащие экспорт переменных ENV) в Node.js, т. Е. process.env
- Использует этот стиль:
.env
# some env variables
FOO=foo1
BAR=bar1
BAZ=1
QUX=
# QUUX=
Вы можете установить переменную окружения через глобальную переменную процесса следующим образом:
process.env['NODE_ENV'] = 'production';
Работает на всех платформах.
Как расширение ответа @ctrlplusb, я бы предложил вам также взглянуть на пакет env-dot-prop
.
Он позволяет вам устанавливать / получать свойства из process.env
, используя dot-path
.
Предположим, что ваш process.env
содержит следующее:
process.env = {
FOO_BAR: 'baz'
'FOO_
fish
вместоbash
, вам нужно использовать:env USER_ID=239482 my_command
. Например, для установки переменных среды для библиотеки node.js 'debug
:env DEBUG='*' node some_file.js
fishshell.com/docs/current/faq.html#faq-single-env – SilentSteel 22 October 2014 в 16:21env DEBUG=* node some_file.js
– divillysausages 8 July 2015 в 21:20