Zmienna środowiskowa dostarcza informacji o środowisku, w którym działa proces. Konfigurują porty serwerów i połączenia z bazami danych, ukrywają poufne dane, takie jak klucze API i wiele więcej.
Sposób odczytywania zmiennych środowiskowych NestJS różni się od standardowego pakietu dotenv NodeJS.
Moduł konfiguracyjny NestJS pozwala zarządzać zmiennymi środowiskowymi w zaledwie kilku krokach.
Krok 1: Instalowanie zależności
NestJS zapewnia dedykowane @nestjs/config pakiet, który używa dotenv opakowanie pod maską. Ten pakiet o zerowej zależności ładuje zmienne środowiskowe z .env zapisz do proces.env. Obiekt process.env jest zmienną globalną wstrzykiwaną w czasie wykonywania na użytek aplikacji.
Zainstaluj pakiet konfiguracyjny NestJS, uruchamiając:
instalacja npm @nestjs/config
Pakiet konfiguracyjny NestJS działa poprzez udostępnienie modułu konfiguracyjnego i usługi konfiguracyjnej aplikacji. Moduł konfiguracyjny określa .env złożyć wniosek do przeczytania. W tym samym czasie usługa konfiguracyjna ujawnia informacje wewnątrz .env plik do reszty aplikacji.
Krok 2: Tworzenie plików ENV
Przechowywanie zmiennych środowiskowych w pliku pozwala łatwo uzyskać do nich dostęp z dowolnego języka, w różnych systemach operacyjnych. Możesz kontrolować te wersje .env plików, dzięki czemu zwiększają przenośność projektu i mogą ułatwić debugowanie problemów.
Podejście NestJS do tworzenia plików .env różni się od oficjalnej rekomendacji dotenv. Zgodnie z dokumentacją dotenv nie należy tworzyć więcej niż jednego pliku .env w aplikacji. NestJS umożliwia tworzenie wielu plików .env o różnych nazwach.
Dobrą praktyką jest zawsze tworzenie plików .env w katalogu głównym projektu i umieszczanie ich w swoim .gitignore plik.
Nie ma specjalnego sposobu na utworzenie pliku .env — po prostu utwórz go i edytuj za pomocą zwykłego edytora tekstu — ale muszą zaczynać się od .env. Na przykład, .env.development.
Krok 3: Konfiguracja modułu konfiguracyjnego
Postępuj zgodnie z poniższymi krokami, aby skonfigurować moduł konfiguracyjny globalnie i określić .env ścieżki:
- W module głównym Twojego projektu (app.modue.ts) plik, import Moduł konfiguracji z @nestjs/config.
- Dodać Moduł konfiguracji dla Twojej import tablica i wywołaj dla root metoda na to.
- Przekaż obiekt konfiguracyjny do dla root metoda, z jest globalny własność do PRAWDA. Ta opcja udostępnia konfigurację przez inne moduły w Twojej aplikacji, co oznacza, że nie będziesz musiał konfigurować jej więcej niż raz.
- Określ swoje envFilePath w twoim obiekcie konfiguracyjnym. Ta właściwość może być ciągiem (jeśli masz) .env plik) lub tablicę zawierającą wszystkie twoje .env pliki i poinformuje moduł konfiguracyjny, których plików szukać.
// aplikacja.moduł.ts
@Moduł({
import: [
Moduł konfiguracji.dla roota({
jest globalny: PRAWDA,
envFilePath: 'Nazwy plików .env',
}),
Krok 4: Używanie usługi konfiguracji do odczytywania zmiennych środowiskowych
Aby uzyskać dostęp do wartości konfiguracyjnych, zacznij od importu Usługa konfiguracji z @nestjs/config. Wstrzyknij go do konstruktor klasy deklarując prywatny zmienna i przypisanie Usługa konfiguracji jako jego typ.
Na przykład:
konstruktor(konfiguracja prywatna: ConfigService) {}
Aby uzyskać dostęp do zmiennej, wywołaj Dostawać metoda na Usługa konfiguracji na Twoim prywatny zmienny. Przekaż mu typ danych, którego potrzebujesz jako ogólny, oraz nazwę zmiennej środowiskowej, do której chcesz uzyskać dostęp.
Na przykład:
const envVar = this.config.get<strunowy>('ENV_VALUE');
The Usługa konfiguracji szuka wartości o nazwie „ENV_VALUE” i zwraca jej wartość.
Zauważ, że jeśli dwa .env pliki zawierają tę samą nazwę właściwości, pierwszą określoną w envFilePath będzie mieć pierwszeństwo.
Znaczenie zmiennych środowiskowych
Zmienne środowiskowe są istotną częścią programu, szczególnie w bardziej złożonych aplikacjach. Pozwalają kontrolować konfigurację programu za pomocą łatwego do zrozumienia, wspólnego mechanizmu.
Zmiennych środowiskowych można używać do kontrolowania wszystkich aspektów konfiguracji. Od różnych ustawień bazy danych po poufne dane, takie jak klucze API i poświadczenia, umożliwiają one zmianę konfiguracji bez dotykania bazowego kodu źródłowego.