Próbuję postępować zgodnie z samouczkiem dotyczącym NodeJs. Nie sądzę, żebym coś przeoczył, ale kiedy dzwonię, process.env.NODE_ENV
jedyna wartość, jaką otrzymuję, jest nieokreślona. Według moich badań wartością domyślną powinno być „rozwój”. W jaki sposób ta wartość jest ustawiana dynamicznie i gdzie jest ustawiona początkowo?
javascript
node.js
basheps
źródło
źródło
heroku config:set NODE_ENV="production"
Odpowiedzi:
process.env jest odniesieniem do twojego środowiska, więc musisz ustawić tam zmienną.
Aby ustawić zmienną środowiskową w systemie Windows :
w systemie OS X lub Linux :
źródło
export NODE_ENV=development
na moim terminalu Mac przed wykonaniemreact-native run-ios
z tego samego terminala. Podczas debugowania wartośćprocess.env.NODE_ENV
jest niezdefiniowana.wskazówki
w
package.json
:w
app.js
:więc może to lepiej:
lub
źródło
"start": "set NODE_ENV=dev&& node app.js"
console.log(process.env.NODE_ENV.length)
// 4 (w tym spacja na końcu)console.log(('' + process.env.NODE_ENV).trim() === 'dev') // true
ponieważ nie zgłosi błędu, nawet jeśli parametr process.env.NODE_ENV jest niezdefiniowany.W przypadku osób używających * nix (Linux, OS X itp.) Nie ma powodu, aby robić to za pomocą drugiego polecenia eksportu, można je połączyć jako część polecenia wywołującego:
Łatwiej, nie? :)
źródło
Napotkaliśmy ten problem podczas pracy z node w systemie Windows.
Zamiast wymagać od każdego, kto próbuje uruchomić aplikację, ustawienia tych zmiennych, zapewniliśmy rezerwę w aplikacji.
W środowisku produkcyjnym zdefiniowalibyśmy to za pomocą zwykłych metod (SET / eksport).
źródło
Możesz użyć pakietu cross-env npm. Zadba o przycinanie zmiennej środowiskowej, a także upewni się, że działa na różnych platformach.
W katalogu głównym projektu uruchom:
Następnie w pliku package.json, w sekcji scripts, dodaj:
Następnie w terminalu, w katalogu głównym projektu, uruchom aplikację, uruchamiając:
Zmienna środowiskowa będzie wtedy dostępna w Twojej aplikacji jako
process.env.NODE_ENV
, więc możesz zrobić coś takiego:źródło
w package.json musimy skonfigurować jak poniżej (działa w Linuksie i Mac OS)
ważne jest, aby „eksportować NODE_ENV = produkcja” po poniższym przykładzie poleceń kompilacji:
dla środowiska deweloperskiego musimy nacisnąć komendę „npm run dev”
w środowisku produkcyjnym musimy nacisnąć komendę „npm run start”
źródło
W systemie macOS dla tych, którzy używają wersji ekspresowej
4.x.x
i używająDOTENV
wtyczki, należy użyć w następujący sposób:Po zainstalowaniu wtyczki zaimportuj w następujący sposób w pliku, w którym inicjujesz aplikację:
require('dotenv').config({path: path.resolve(__dirname+'/.env')});
W katalogu głównym utwórz plik „.env” i dodaj zmienną, taką jak:
NODE_ENV=development
lubNODE_ENV = development
źródło
W UBUNTU użyj:
$ export NODE_ENV = test
źródło
Wynika to z systemu operacyjnego
W pliku package.json upewnij się, że masz skrypty (gdzie app.js jest głównym plikiem js do wykonania, a NODE_ENV jest zadeklarowany w pliku .env).
Dla Windowsa
Skonfiguruj także zmienną pliku .env z NODE_ENV = programowanie
Jeśli twój plik .env znajduje się w folderze np. Folder config, upewnij się, że podałeś go w app.js (głównym pliku js)
const dotenv = require ('dotenv'); dotenv.config ({ścieżka: './config/config.env'});
źródło
Jeśli napotkałeś ten problem w Reakcie, potrzebujesz [email protected] i wyższej. Również w przypadku innych zmiennych środowiskowych, niż te, które
NODE_ENV
mają działać w Reakcie, muszą być poprzedzoneREACT_APP_
.źródło
Jak najwcześniej w swojej aplikacji, wymagaj i skonfiguruj dotenv.
require('dotenv').config()
źródło
Możesz również ustawić kod, na przykład:
process.env.NODE_ENV = 'test';
źródło