Do użytku w środowiskach express.js. Jakieś sugestie?
javascript
node.js
macos
environment-variables
Mark Gia Bao Nguyen
źródło
źródło
Odpowiedzi:
Przed uruchomieniem aplikacji możesz to zrobić w konsoli,
Lub jeśli jesteś w systemie Windows, możesz spróbować tego:
lub możesz uruchomić swoją aplikację w ten sposób:
Możesz również ustawić go w swoim pliku js:
Ale nie sugeruję robić tego w pliku środowiska wykonawczego, ponieważ nie jest łatwo otworzyć VIM na serwerze i zmienić go na produkcyjny. Możesz utworzyć plik config.json w swoim katalogu i za każdym razem, gdy aplikacja uruchomi się, odczyta z niego i ustawi konfigurację.
źródło
process.env.NODE_ENV
niezawodne ustawienie z poziomu samej aplikacji. Najlepiej ustaw poprawnie zmienną środowiskową, tak jak Daniel poniżej.NODE_ENV
jawnie przy każdym uruchomieniu aplikacji, jak w drugim przykładzie (NODE_ENV=production node app.js
). W ten sposób potencjalnie uratujesz się przed przyszłym pociąganiem za włosy w przypadku, gdy zapomniszNODE_ENV
przywrócić lokalnemudevelopment
.cross-env NODE_ENV=production
działa na systemach Windows i Linux / Mac.NODE_ENV=production forever app.js
powinien działać.w pakiecie.json:
następnie uruchom w terminalu:
źródło
NODE_ENV=production
pliku package.json nie ma większego sensu. Uruchomienienpm start
w fazie rozwojowej spowoduje uruchomienie go w produkcji. Możesz napisać kod tak, jakby zawsze był produkcyjny, ponieważ zawsze uruchamiasz go w ten sposób. Jedynym powodem, dla którego to robię, byłoby wymuszenie działania innych modułów (np. Express) w trybie produkcyjnym. Po co w ogóle używać zmiennych środowiskowych, jeśli nigdy się nie zmieniają?Nikogo
.env
tu jeszcze nie wymieniono ? Utwórz.env
plik w katalogu głównym aplikacji, a następnierequire('dotenv').config()
przeczytaj wartości. Łatwo zmieniany, łatwy do odczytu, wieloplatformowy.https://www.npmjs.com/package/dotenv
źródło
"mode": "production"
w.env
pliku działało.export NODE_ENV=production
jest złym rozwiązaniem, znika po ponownym uruchomieniu.jeśli nie chcesz się już martwić tą zmienną - dodaj ją do tego pliku:
nie używaj składni eksportu, po prostu napisz (w nowym wierszu, jeśli jakaś zawartość już tam jest):
działa po ponownym uruchomieniu. Nie będziesz musiał ponownie wprowadzać komendy export NODE_ENV = produkcyjnej w dowolnym miejscu i po prostu użyj węzła z czymkolwiek chcesz - na zawsze, pm2 ...
Dla heroku:
co jest tak naprawdę domyślne.
źródło
NODE_ENV=production gulp bundle-production-app
do spakowania gotowego skryptu produkcyjnego, na serwerze NODE_ENV znajduje się w środowisku serwera, a na komputerze dewelopera go nie ma. W niektórych maszynach koszmar, jeśli nie jest ustawiony, i oczekujesz, że będzie zawsze ustawiony . W niektórych oczekujesz, że go nie będziesz, więc nie dodajesz. W każdym razie, robiąc interfejsy, wyjaśniam, czy jest w trybie programowania, więc nigdy nie masz pytania, czy jest włączony, czy wyłączony. Jeśli NODE_ENV jest! == produkcja, to w twojej twarzy znajdujesz się w innym trybie, więc nie ma koszmaru. Wszystko jasne, wszystko dobrze./etc/environment
i uruchomićexport NODE_ENV=production
?Aby nie martwić się, czy uruchamiasz skrypty w systemie Windows, Mac lub Linux, zainstaluj pakiet cross-env . Następnie możesz łatwo używać swoich skryptów, tak jak:
Ogromne rekwizyty dla twórców tego pakietu.
źródło
źródło
NODE_ENV=production
jest teraz domyślny we wdrożeniach Heroku node.js.W przypadku programu Windows Powershell użyj tego polecenia
źródło
W OSX polecam dodanie
export NODE_ENV=development
do twojego~/.bash_profile
i / lub~/.bashrc
i / lub~/.profile
.Osobiście dodaję ten wpis do mojego,
~/.bashrc
a następnie mam~/.bash_profile
~/.profile
importuję zawartość tego pliku, dzięki czemu jest spójny w różnych środowiskach.Po dodaniu tych dodatków uruchom ponownie terminal, aby wybrać ustawienia.
źródło
Jeśli korzystasz z systemu Windows. Najpierw otwórz cmd w prawym folderze
naciśnij Enter, możesz zacząć od węzła
zacznie się od ustawienia env
źródło
Jeśli używasz webpacka w swojej aplikacji, możesz po prostu go tam ustawić, używając
DefinePlugin
...Więc w swojej
plugin
sekcji ustaw NODE_ENV naproduction
:źródło
Aby mieć wiele środowisk, potrzebujesz wcześniej wszystkich odpowiedzi (parametr NODE_ENV i wyeksportuj go), ale używam bardzo prostego podejścia bez potrzeby instalowania czegokolwiek. W pliku package.json umieść skrypt dla każdej potrzebnej env, na przykład:
Następnie, aby uruchomić aplikację zamiast
npm start
korzystania z niejnpm run script-prod
.W kodzie możesz uzyskać dostęp do bieżącego środowiska za pomocą
process.env.NODE_ENV
.Voila
źródło
Windows CMD ->
set NODE_ENV=production
Windows Powershell ->
$env:NODE_ENV="production"
MAC ->
export NODE_ENV=production
źródło
Daniel ma fantastyczną odpowiedź, która jest lepszym podejściem do prawidłowego procesu wdrażania (ustaw i zapomnij).
Dla osób korzystających z ekspresu. Możesz użyć serwera grunt-express-server, który również jest fantastyczny. https://www.npmjs.org/package/grunt-express-server
źródło
Może to być szansa, że wykonałeś dwa wystąpienia obiektu sekwencjonowania
na przykład: var con1 = new Sequelize (); var con2 = new Sequelize ();
niż ten sam błąd wystąpi
źródło