Heim > Web-Frontend > js-Tutorial > Hauptteil

Der beste Weg, Umgebungsvariablen und mehrere Umgebungen in Nest.js zu konfigurieren

WBOY
Freigeben: 2024-08-10 06:40:36
Original
351 Leute haben es durchsucht

The Best way to configure environment variables and multi environments in Nest.js

Was ich an Nest.js wirklich liebe, ist, dass es ein leistungsstarkes, vollständiges Node.js-Framework ist, das Ihnen opionierte Komplettlösungen zum Erstellen bietet Backend-Anwendungen.

Es verfügt von Anfang an über integrierte TypeScript-Unterstützung und kombiniert Elemente von OOP (Objektorientierte Programmierung), FP (Funktionale Programmierung) und FRP (Functional Reactive Programming), wie es auf der offiziellen Website heißt.

Es hat auch Architektur von Anfang an, was für jemanden wie mich, der gerne mit gut strukturierten Architekturprojekten arbeitet, erstaunlich ist.

Die Dokumentation allein ist sehr beeindruckend und deckt jeden Aspekt ab, einschließlich der Einstellung von Umgebungsvariablen, aber für mich
Ich habe nicht ganz verstanden, wie man mehrere Umgebungen einrichtet.

Vielleicht weil ich neu bei node.js und nestjs bin. Als ich jedoch im Internet nach Artikeln suchte, zeigten sie immer eine Möglichkeit, die Dotenv-Bibliothek direkt zu verwenden, anstatt Nestjs nativ zu verwenden, das Dotenv unter verwendet Haube.

Und nachdem ich viele Stunden lang Artikel neben der Dokumentation durchgesehen hatte, habe ich eine Lösung ausgearbeitet, die in Nestjs nativ ist, und dachte, ich würde sie teilen.


Zuerst

Nehmen wir an, wir benötigen zwei Umgebungen für unser Projekt 'dev' und 'prod'
und wir benötigen 2 Umgebungsvariablen pro Umgebung: PORT und DATABASE_URL.

1- Erstellen Sie 2 .env-Dateien zum Speichern von  PORT und DATABASE_URL und benennen Sie die Dateien ( .env.dev und .env.prod.)

PORT=3500

DATABASE_URL="file:./dev.db"`
Nach dem Login kopieren

2- Erstellen Sie eine Umgebungsvariable mit dem Namen NODE_ENV, aber dieses Mal werden wir sie nicht in einer .env-Datei speichern, sondern in Startskripte für Entwicklung und Produktion einfügen.

Die Einstellung von NODE_ENV kann auf verschiedenen Plattformen (Windows, Mac oder Linux) unterschiedlich sein. Daher installieren wir ein div-übergreifendes Paket, damit wir Umgebungsvariablen plattformübergreifend festlegen können.

Installation mit npm

$ npm install --save-dev cross-env
Nach dem Login kopieren

oder mit pnpm

$ pnpm install --save-dev cross-env
Nach dem Login kopieren

Ändern Sie dann Ihre package.json-Skripts, um Cross-env zu verwenden:

"scripts": {
    "start:dev": "cross-env-shell NODE_ENV=dev nest start --watch",
    "start:prod": "cross-env-shell NODE_ENV=prod node dist/main",
}
Nach dem Login kopieren

Also jetzt, wenn Sie Ihre Anwendung mit
ausführen

npm run start:dev 
Nach dem Login kopieren

oder

pnpm run start:dev
Nach dem Login kopieren

Sie haben NODE_ENV=dev und können es in der gesamten Anwendung verwenden.

3- Damit Nestjs .env-Dateien lesen kann, müssen wir ConfigModule verwenden und es richtig konfigurieren, aber zuerst müssen wir es installieren.

npm

$ npm i --save @nestjs/config

Nach dem Login kopieren

pnpm

$ pnpm i --save @nestjs/config

Nach dem Login kopieren

4- Verwenden Sie ConfigModule:

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.NODE_ENV}`,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
Nach dem Login kopieren

envFilePath: wird verwendet, um einen anderen Pfad für die .env-Datei anzugeben. 
oder eine andere Datei als die Standard-.env-Datei lesen

.env.${process.env.NODE_ENV} wird übersetzt in .env.dev und
Wenn wir den Befehl ausführen

npm run start:prod
Nach dem Login kopieren

.env.${process.env.NODE_ENV} würde zu .env.prod.

übersetzen

5- So greifen Sie auf unsere Umgebungsvariablen zu
Um auf Umgebungsvariablen zuzugreifen, verwenden wir ConfigModule.

Wir können es in main.ts
verwenden

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const configService = app.get(ConfigService);
  const port = configService.get('PORT');

  await app.listen(port);
}
Nach dem Login kopieren

oder wenn wir es an einer anderen Stelle benötigen, verwenden wir eine Injektion.
zum Beispiel

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return (
      this.configService.get<string>('DATABASE_URL')
    );
  }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDer beste Weg, Umgebungsvariablen und mehrere Umgebungen in Nest.js zu konfigurieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!