Konfiguration von JavaScript-Anwendungen (Node.js): Bibliotheken dotenv, convict, nconf

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Konfiguration von JavaScript-Anwendungen (Node.js): Die besten Bibliotheken und Praktiken



Jede ernsthafte Node.js-Anwendung benötigt ein flexibles und sicheres Konfigurationssystem. Datenbank-Passwörter, API-Schlüssel, Server-Ports, Logging-Level – all diese Parameter müssen vom Code getrennt sein, sich in verschiedenen Umgebungen (Entwicklung, Test, Produktion) leicht ändern lassen und vor allem nicht in die Versionskontrolle gelangen.



In diesem Artikel betrachten wir die drei beliebtesten Bibliotheken zur Konfigurationsverwaltung in Node.js: dotenv, convict und nconf. Sie erfahren, wie Sie Anwendungen richtig konfigurieren, typische Fehler vermeiden und das passende Werkzeug für Ihre Aufgaben auswählen.



1. dotenv – Einfachheit und Sicherheit



dotenv ist die beliebteste Bibliothek zum Laden von Umgebungsvariablen aus einer .env-Datei. Ihr Hauptvorteil ist der Minimalismus. Sie erstellen einfach eine .env-Datei, fügen Ihre Parameter hinzu, und die Bibliothek lädt sie in process.env.



Installation und grundlegende Verwendung



npm install dotenv


Erstellen Sie eine .env-Datei im Stammverzeichnis des Projekts:



PORT=3000DB_HOST=localhostDB_USER=adminDB_PASS=supersecretNODE_ENV=development


Fügen Sie ganz am Anfang Ihrer Anwendung (normalerweise in app.js oder index.js) hinzu:



require('dotenv').config();

const express = require('express');const app = express();

const port = process.env.PORT || 3000;

app.listen(port, () => { console.log(`Server läuft auf Port ${port}`);});


Wichtige Regeln für die Arbeit mit dotenv



  • Committen Sie niemals die .env-Datei in Git. Fügen Sie sie zur .gitignore hinzu.
  • Erstellen Sie eine .env.example-Datei mit einer Vorlage aller Variablen (ohne echte Werte). Dies hilft neuen Entwicklern, sich schnell zurechtzufinden.
  • Verwenden Sie für die Produktion echte, auf dem Server gesetzte Umgebungsvariablen. dotenv wird nur für die Entwicklung benötigt.
  • Speichern Sie keine komplexen Datenstrukturen in .env – nur Zeichenketten und Zahlen.


2. convict – Validierung und Schemata



Wenn dotenv die Frage "wie laden" löst, beantwortet convict die Frage "wie prüfen und strukturieren". Diese Bibliothek ermöglicht es, ein Konfigurationsschema mit Datentypen, Standardwerten und Validierungsregeln zu definieren.



Installation und Beispiel eines Schemas



npm install convict


const convict = require('convict');

const config = convict({ env: { doc: 'Anwendungsumgebung', format: ['production', 'development', 'test'], default: 'development', env: 'NODE_ENV' }, server: { port: { doc: 'Port für den HTTP-Server', format: 'port', default: 3000, env: 'PORT' } }, db: { host: { doc: 'Datenbank-Host', format: String, default: 'localhost', env: 'DB_HOST' }, password: { doc: 'DB-Passwort', format: String, default: '', env: 'DB_PASS', sensitive: true // nicht in Logs ausgeben } }});

// Werte ladenconfig.validate({ allowed: 'strict' });

module.exports = config;


Vorteile von convict



  • Automatische Validierung – wenn in .env ein String statt einer Zahl steht, erhalten Sie einen Fehler beim Start.
  • Dokumentation – das doc-Feld dient als eingebaute Dokumentation.
  • Sicherheit – als sensitive: true markierte Felder werden nicht in Logs ausgegeben.
  • Unterstützung für verschachtelte Strukturen – praktisch für komplexe Konfigurationen.


3. nconf – Hierarchie der Quellen



nconf

Empfehlungen