Próbuję wykonać samouczek, który mówi:
Istnieje kilka sposobów ładowania poświadczeń.
- Załadowany ze zmiennych środowiskowych,
- Załadowany z pliku JSON na dysku,
Klucze muszą być następujące:
USER_ID, USER_KEY
... Oznacza to, że jeśli właściwie ustawisz zmienne środowiskowe, nie musisz wcale zarządzać poświadczeniami w swojej aplikacji.
Na podstawie niektórych Google, wydaje się, że muszę ustawić zmienne process.env
? Jak i gdzie ustawić te dane uwierzytelniające? Przykład Proszę.
źródło
fish
zamiastbash
, trzeba użyć:env USER_ID=239482 my_command
. Na przykład, do ustawiania zmiennych środowiskowych dla node.js'debug
biblioteki:env DEBUG='*' node some_file.js
fishshell.com/docs/current/faq.html#faq-single-envenv DEBUG=* node some_file.js
dotenv
chodzi, ponieważ przeczyta.env
plik i zastosuje go.Bardzo polecam zajrzeć do pakietu dotenv.
https://github.com/motdotla/dotenv
Jest trochę podobny do biblioteki sugerowanej w odpowiedzi z @Benxamin, ale jest o wiele czystszy i nie wymaga żadnych skryptów bash. Warto również zauważyć, że baza kodu jest popularna i dobrze utrzymana.
Zasadniczo potrzebujesz pliku .env (który zdecydowanie polecam zignorować z git / mercurial / etc):
Następnie w pliku wejściowym aplikacji umieść następujący wiersz jak najwcześniej:
Bum. Gotowy. „process.env” będzie teraz zawierał powyższe zmienne:
Plik „.env” nie jest wymagany, więc nie musisz się martwić, że Twoja aplikacja przewróci się pod nieobecność.
źródło
Wystarczy podać wartości env w wierszu polecenia
źródło
Możesz ustawić zmienną środowiskową za pomocą globalnej zmiennej procesowej w następujący sposób:
Działa na wszystkich platformach.
źródło
Jeśli chcesz mieć opcję zarządzania, wypróbuj pakiet envs npm. Zwraca wartości środowiska, jeśli są ustawione. W przeciwnym razie możesz określić wartość domyślną przechowywaną w globalnej zmiennej obiektu domyślnego, jeśli nie znajduje się ona w twoim środowisku.
Korzystanie z plików .env („dot ee-en-vee”) lub plików środowiska jest dobre z wielu powodów. Osoby fizyczne mogą zarządzać własnymi konfiguracjami. Możesz wdrożyć różne środowiska (deweloper, scena, prod) w usługach chmurowych z własnymi ustawieniami środowiska. I możesz ustawić rozsądne wartości domyślne.
Wewnątrz
.env
pliku każda linia jest wpisem, podobnie jak w tym przykładzie:Należy nie zawierają
.env
w swoim repozytorium kontroli wersji (dodać go do.gitignore
pliku).Aby pobrać zmienne z
.env
pliku do swojego środowiska, możesz użyć skryptu bash, aby zrobić odpowiednikexport NODE_ENV=development
tuż przed uruchomieniem aplikacji.To idzie w javascript aplikacji:
źródło
To zależy od systemu operacyjnego i powłoki
W systemie Linux z powłoką bashową tworzysz zmienne środowiskowe takie jak to (w konsoli):
Aby uzyskać więcej informacji na temat zmiennych środowiskowych w Ubuntu (na przykład):
Zmienne środowiskowe na Ubuntu
źródło
Jak powiedział ctrlplusb, polecam użyć pakietu
dotenv
, ale innym sposobem jest utworzenie pliku js i wymaganie go w pierwszym wierszu serwera aplikacji.env.js:
app.js:
źródło
Użytkownicy systemu Windows: uważaj! Te polecenia są zalecane w systemie Unix, ale w systemie Windows są one tylko tymczasowe. Ustawiają zmienną tylko dla bieżącej powłoki, gdy tylko zrestartujesz maszynę lub uruchomisz nową powłokę terminala, znikną.
SET TEST="hello world"
$env:TEST = "hello world"
Aby ustawić trwałą zmienną środowiskową w systemie Windows, należy zamiast tego zastosować jedną z następujących metod:
A) Plik .env w projekcie - jest to najlepsza metoda, ponieważ będzie oznaczać, że możesz przenieść projekt do innych systemów bez konieczności konfigurowania zmiennych środowiska na tym systemie, na którym możesz uruchomić swój kod.
Utwórz
.env
plik w katalogu głównym folderu projektu z zawartością:TEST="hello world"
Napisz kod węzła, który odczyta ten plik. Sugeruję zainstalowanie dotenv (
npm install dotenv --save
), a następnie dodanierequire('dotenv').config();
podczas instalacji kodu węzła.process.env.TEST
Pliki env dobrze zachowują klucze API i inne sekrety, których nie chcesz mieć w swojej bazie kodu. Po prostu dodaj go do swojego
.gitignore
.B) Użyj PowerShell - utworzy zmienną, która będzie dostępna w innych terminalach. Ale uwaga, zmienna zostanie utracona po ponownym uruchomieniu komputera.
[Environment]::SetEnvironmentVariable("TEST", "hello world", "User")
Ta metoda jest powszechnie zalecana na forach Windows, ale nie sądzę, aby ludzie wiedzieli, że zmienna nie utrzymuje się po ponownym uruchomieniu systemu ....
C) Użyj interfejsu GUI systemu Windows
źródło
Krok 1: Dodaj zmienne środowiskowe do odpowiedniego pliku. Na przykład można wywołać środowisko pomostowe
.env.staging
, które zawiera zmienne środowiskoweUSER_ID
iUSER_KEY
specyficzne dla środowiska pomostowego.Krok 2: W swoim
package.json
pliku dodaj:następnie wywołaj go w skrypcie wdrażania w następujący sposób:
Super prosta konfiguracja i działa jak urok!
Źródło: https://medium.com/@tacomanator/environments-with-create-react-app-7b645312c09d
źródło
Dla użytkowników systemu Windows to pytanie o przepełnienie stosu i najwyższa odpowiedź są dość przydatne w zakresie ustawiania zmiennych środowiskowych za pomocą wiersza polecenia
Jak ustawić NODE_ENV = produkcja w systemie Windows?
źródło
Znalazłem fajne narzędzie do tego.
plik-env węzła
Analizuje i ładuje pliki środowiskowe (zawierające eksport zmiennych ENV) do środowiska Node.js, tj.
process.env
- Używa tego stylu:źródło
W ramach rozszerzenia odpowiedzi @ctrlplusb
sugeruję, abyś również spojrzał na
env-dot-prop
pakiet.Pozwala ustawić / uzyskać właściwości
process.env
przy użyciudot-path
.Załóżmy, że
process.env
zawiera następujące elementy:Następnie możesz manipulować zmiennymi środowiskowymi w następujący sposób:
Pomaga to analizować zmienne środowiskowe i wykorzystywać je jako obiekt konfiguracji w aplikacji.
Pomaga także wdrożyć konfigurację 12-czynnikową .
źródło
Bardzo dobry sposób wykonywania zmiennych środowiskowych, których z powodzeniem używałem, jest poniżej:
A. Mają różne pliki konfiguracyjne :
dev.js // to ma wszystkie zmienne środowiskowe tylko do programowania
Plik zawiera:
stage.js // ma to wszystkie zmienne środowiskowe tylko do programowania
qa.js // zawiera wszystkie zmienne środowiskowe przeznaczone wyłącznie do testowania qa
Plik zawiera:
UWAGA : wartości zmieniają się głównie w środowisku, ale klucze pozostają takie same.
możesz mieć więcej
z__prod.js // ma to wszystkie zmienne środowiskowe tylko do produkcji / na żywo
UWAGA: Ten plik nigdy nie jest dołączany do wdrożenia
Umieść wszystkie te pliki konfiguracyjne w folderze / config /
UWAGA : Nazwa prod jest inna niż inne, ponieważ nie byłaby używana przez wszystkich.
B. Ustaw zmienne środowiskowe OS / Lambda / AzureFunction / GoogleCloudFunction z pliku konfiguracyjnego
Teraz idealnie te zmienne konfiguracyjne w pliku powinny być zmienne środowiskowe systemu operacyjnego (lub zmienne funkcyjne LAMBDA lub zmienne funkcyjne platformy Azure, funkcje Google Cloud itp.)
więc piszemy automatyzację w systemie operacyjnym Windows (lub innym)
Załóżmy, że piszemy plik nietoperza „ setenv ”, który przyjmuje jeden argument, którym jest środowisko, które chcemy ustawić
Teraz uruchom „ setenv dev ”
a) Pobiera dane wejściowe z przekazanej zmiennej argumentu (na razie „dev”)
b) odczytuje odpowiedni plik („config \ dev.js”)
c) ustawia zmienne środowiskowe w systemie operacyjnym Windows (lub innym)
Na przykład,
Zawartość setenv.bat może być:
Zawartość pliku setenv.js może być:
To wszystko , twoje środowisko jest gotowe do użycia.
Kiedy wykonasz ' setenv qa ', wszystkie zmienne środowiskowe qa będą gotowe do użycia z qa.js i gotowe do użycia przez ten sam program (który zawsze prosi o process.env.someEnvKey1, ale otrzymywana wartość to qa one).
Mam nadzieję, że to pomaga.
źródło
Ułatw sobie życie z dotenv-webpack . Po prostu zainstaluj go
npm install dotenv-webpack --save-dev
, a następnie utwórz.env
plik w katalogu głównym aplikacji (pamiętaj, aby dodać go.gitignore
przed sobągit push
). Otwórz ten plik i ustaw tam niektóre zmienne środowiskowe, na przykład:Teraz w konfiguracji pakietu internetowego dodaj:
Tylko
const Dotenv = require('dotenv-webpack');
,plugins: [new Dotenv()]
i oczywiściemodule.exports = webpackConfig; // Export all custom Webpack configs.
są wymagane. Jednak w niektórych scenariuszach mogą pojawić się błędy. W przypadku tych masz również rozwiązanie sugerujące, w jaki sposób możesz naprawić określony błąd.Teraz, gdziekolwiek chcesz, możesz po prostu użyć
process.env.ENV_VAR_1
,process.env.ENV_VAR_2
,process.env.ENV_VAR_3
w aplikacji.źródło
Po ustawieniu env var systemu stałem się niezdefiniowany. Kiedy wstawię APP_VERSION w zmiennej env użytkownika, wtedy mogę wyświetlić wartość z węzła poprzez proces.env.APP_VERSION
źródło
Jeśli używasz systemu Mac / Linux i chcesz odzyskać parametry lokalne na używanym komputerze, wykonaj następujące czynności:
źródło