2016-09-21 22 views
7

Próbuję znaleźć najlepszy sposób na załadowanie zmiennych środowiskowych do mojej aplikacji AngularJS. Obecnie używam stałych, które pobierają swoje wartości z wartości zdefiniowanych w pakiecie Webpack definePlugin. Powoduje to jednak problem z Heroku, ponieważ kod jest budowany po przeniesieniu do etapu przemieszczania, a gdy jest promowany do produkcji, nie jest on przebudowywany, dlatego stałe pakiety WWW definePlugin są zmiennymi środowiskowymi przemieszczania.Aplikacja kątowa na Heroku zbudowana przy użyciu Webpacka - zmienne środowiskowe?

Przyjrzałem się prośbie o zmienne środowiskowe z mojego interfejsu API w czasie wykonywania, a następnie ustawiałem je jako stałe, które będą używane w moim interfejsie użytkownika, ale nie mogę określić, jak ustawić stałe programowo poza początkowym .constant(..) okazja.

Jeśli ktoś zna jakieś inne lepsze praktyki związane z ładowaniem zmiennych środowiskowych do front-endu podczas korzystania z Webpack (a nie z Grunt), proszę dać mi znać.

Odpowiedz

1

Jeśli korzystasz z node.js (i npm) na swoim serwerze, możesz rozważyć uruchomienie webpacka w skrypcie "npm prestart", zamiast w "npm postinstall".

W ten sposób pakiet sieci Web byłby uruchamiany za każdym razem, gdy zaczynają się lub są uruchamiane od czasu do czasu, a więc odebrałbyś definicje env z odpowiedniej fazy rurociągu Heroku. Tak więc, kiedy zaczynają się wasze hamownie etapowe, pakiet internetowy zbierze wasze tymczasowe definicje env, a kiedy uruchomią się wasze dynama produkcyjne, pakiet internetowy zbierze wasze definicje env var.

Wadą tego podejścia jest jednak to, że zwiększa czas odłączania dynama podczas recyklingu, ponieważ muszą one teraz uruchomić pakiet sieci Web przed uruchomieniem.

+0

Czy tak też się stanie, jeśli aplikacja zostanie losowo zrestartowana z jakiegoś powodu? To bardzo czysta opcja, ale nie jestem pewna, jak niebezpieczna jest. –

+0

Ta opcja uruchamia się przy każdym uruchomieniu npm. Tak więc, na Heroku oznacza to, że za każdym razem, gdy aplikacja odtwarza lub uruchamia się ponownie z dowolnego innego powodu (np. Gdy zmieniasz zmienne środowiskowe, promujesz z jednej potokowej aplikacji do drugiej itd.). –

+0

Jednak, jak już wspomniano, to rozwiązanie zwiększa przestoje w twoich dynosach podczas recyklingu itp. Musisz się upewnić, że to nie jest problem dla twojej aplikacji. Oczywiście istnieją sposoby obejścia tego problemu (np. Patrz https://devcenter.heroku.com/articles/preboot), ale musisz mieć świadomość ich konsekwencji. –

Powiązane problemy