2016-09-21 2 views
7

Я пытаюсь найти лучший способ загрузить переменные среды в мое приложение AngularJS. В настоящее время я использую константы, которые берут свои значения из значений, определенных в Webpack definePlugin. Однако это вызывает проблему с Heroku по мере того, как код создается при нажатии на этап, и когда он продвигается к производству, он не восстанавливается, поэтому константы webpack definePlugin являются промежуточными переменными среды.Угловое приложение на Heroku, построенное с использованием Webpack - переменные окружения?

Я рассмотрел запрос переменных окружения из моего API во время выполнения, а затем установил их как константы, которые будут использоваться в моем интерфейсе, но я не могу понять, как устанавливать константы программно за пределами начального .constant(..) возможность.

Если кто-либо знает какие-либо другие рекомендации по загрузке переменных среды во внешний интерфейс при использовании Webpack (а не Grunt), пожалуйста, дайте мне знать.

ответ

1

Если вы используете node.js (и npm) на своем сервере, вы можете попробовать запустить webpack в сценарии «npm prestart», а не в «npm postinstall».

Таким образом, webpack будет запускаться каждый раз, когда запускаются или перерабатываются ваши dynku dynoku, и таким образом собираются ваши определения env var из соответствующей фазы конвейера Heroku. Итак, когда начнутся ваши исполняемые диноды, webpack подберет ваши определения env var env, и когда начнутся ваши производственные dynos, webpack подберет ваши производные env var определения.

Недостаток этого подхода, однако, заключается в том, что увеличивается время, в течение которого ваши динозаводы не работают, при их переработке, так как теперь им нужно запустить webpack перед запуском.

+0

Будет ли это также происходить, если приложение будет случайно перезагружено по какой-либо причине? Это очень чистый вариант, но я не уверен, насколько это опасно. –

+0

С помощью этой опции webpack будет запускаться каждый раз, когда запускается npm start. Таким образом, на Heroku это означает, что каждый раз, когда приложение перерабатывает или перезапускается по любой другой причине (например, когда вы меняете переменные среды, продвигайте приложение из одного приложения к другому и т. Д.). –

+0

Однако, как уже отмечалось, это решение увеличивает время простоя ваших динозавров при утилизации и т. Д. Вам нужно убедиться, что это не проблема для вашего приложения. Конечно, есть способы обойти это (например, см. Https://devcenter.heroku.com/articles/preboot), но вам нужно знать о последствиях. –

Смежные вопросы