Установка переменных среды в сценарии оболочки для приложения React - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь установить некоторые переменные окружения в скрипте powershell (и bash) и прочитать их в приложении ReactJS. Сценарий оболочки прост:

$env:AUTHDOMAIN="some.domain.com"
$env:AUTHCLIENTID="bunch-o-characters"
$env:AUTHCALLBACK="http://somewhere:3002/callback"
$env:AUTHAUDIENCE="auth-audience"

$env:PORT=3002

# Get-ChildItem Env:

yarn start

Порт правильно выбирается yarn, но ни одна из переменных (включая PORT) не доступна через process.env в javascript React.

console.log("domain     : " + process.env.AUTHDOMAIN);
...
domain     : undefined App.js:33

Нет модов для моего package.json файла:

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

Чего мне не хватает? Get-ChildItem показывает, что переменные установлены правильно в среде.

Редактировать: я попробовал решение, перечисленное здесь , и оно не работает. Он также блокирует терминал от получения любого вывода:

$ ($env:AUTHDOMAIN="some.domain.com") -and (yarn start)

Тот же результат.

Редактирование # 2: Стоит отметить, что поведение точно такое же в linux / bash (это хороший лакмусовый тест, потому что я делал это в bash около 100 миллиардов раз) - пряжа устанавливает порт правильно, но никакая информация не превращает его в приложение реакции:

#!/bin/sh

export AUTHDOMAIN="some.domain.com"
export AUTHCLIENTID="bunch-o-text"
export AUTHCALLBACK="http://somewhere:3001/callback"
export AUTHAUDIENCE="auth-audience"

export PORT=3002

yarn start

Так что это, вероятно, не имеет ничего общего с powershell.

1 Ответ

1 голос
/ 13 апреля 2019

Каждая переменная среды, которую вы хотите использовать, должна иметь префикс REACT_APP_ в соответствии с документацией create-response-app :

Примечание. Необходимо создать пользовательскую средупеременные, начинающиеся с REACT_APP_.Любые другие переменные, кроме NODE_ENV, будут игнорироваться, чтобы избежать случайного раскрытия секретного ключа на компьютере, который может иметь то же имя.Изменение любых переменных среды потребует перезапуска сервера разработки, если он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...