{"id":52295,"date":"2022-07-11T08:00:40","date_gmt":"2022-07-11T07:00:40","guid":{"rendered":"https:\/\/kinqsta.com\/de\/?p=52295&#038;post_type=knowledgebase&#038;preview_id=52295"},"modified":"2025-10-01T20:18:21","modified_gmt":"2025-10-01T19:18:21","slug":"was-ist-eine-umgebungsvariable","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/","title":{"rendered":"Umgebungsvariablen: Was sie sind und wie man sie benutzt"},"content":{"rendered":"<p>Wenn du schon einmal an der <a href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-ein-full-stack-entwickler\/\">Entwicklung einer Anwendung<\/a> gearbeitet hast, hast du sicher schon von dem Begriff &#8222;Umgebungsvariablen&#8220; geh\u00f6rt Umgebungsvariablen werden verwendet, um Anwendungsgeheimnisse und Konfigurationsdaten zu speichern, die bei Bedarf von deiner laufenden Anwendung abgerufen werden.<\/p>\n<p>Umgebungsvariablen verleihen deiner statischen Codebasis mehr Dynamik: Du kannst zwischen internen und externen Ressourcen umschalten, je nachdem, welchen Wert die Umgebungsvariable deiner Anwendung \u00fcbergibt.<\/p>\n<p>In diesem Artikel werden wir Umgebungsvariablen f\u00fcr dich aufschl\u00fcsseln. Du lernst einige g\u00e4ngige Methoden kennen, um Umgebungsvariablen zu erstellen und zu verwalten, und erf\u00e4hrst, wann du sie einsetzen solltest. Am Ende dieses Artikels wirst du in der Lage sein, Umgebungsvariablen in deinen Anwendungen effektiv und sicher zu nutzen.<\/p>\n<p>Ohne Umschweife, lass uns beginnen!<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Was ist eine Umgebungsvariable?<\/h2>\n<p>Wie oben bereits erkl\u00e4rt, sind Umgebungsvariablen Variablen, die deinem Programm\/ deiner Anwendung w\u00e4hrend der Laufzeit dynamisch zur Verf\u00fcgung stehen. Der Wert dieser Variablen kann aus einer Reihe von Quellen stammen &#8211; Textdateien, Sekretariatsmanager von Drittanbietern, aufrufende Skripte usw.<\/p>\n<p>Wichtig dabei ist, dass der Wert dieser Umgebungsvariablen nicht fest in deinem Programm kodiert ist. Sie sind wirklich dynamisch und k\u00f6nnen je nach der Umgebung, in der dein Programm l\u00e4uft, ge\u00e4ndert werden.<\/p>\n\n<h2>Arten von Umgebungsvariablen<\/h2>\n<p>Es gibt drei wichtige Arten von Umgebungsvariablen in einem Windows-basierten Computersystem, und jede von ihnen hat ihre Anwendungsf\u00e4lle. Lass uns eine nach der anderen besprechen.<\/p>\n<h3>1. Systemumgebungsvariablen<\/h3>\n<p>Systemumgebungsvariablen befinden sich im obersten Stammverzeichnis des Systems und sind f\u00fcr alle Prozesse, die in einem System unter allen Benutzerprofilen des Systems laufen, identisch. Normalerweise werden sie von deinem Betriebssystem\/Systemadministrator festgelegt und du musst dich nur selten damit befassen.<\/p>\n<p>Eine der h\u00e4ufigsten Verwendungen einer Systemumgebungsvariable ist das Einrichten einer <code>PATH<\/code> -Variable f\u00fcr ein globales Paket\/eine globale Bibliothek, das\/die von allen Benutzern im System verwendet werden soll.<\/p>\n<h3>2. Benutzer-Umgebungsvariablen<\/h3>\n<p>Benutzerumgebungsvariablen sind die Variablen, die in Windows-Systemen lokal f\u00fcr ein Benutzerprofil sind. In diesen Variablen werden benutzerspezifische Informationen gespeichert, z. B. der Pfad zu einer lokalen Installation von Bibliotheken, die nicht von allen Benutzern verwendet werden sollen, Werte f\u00fcr Programme, die nur f\u00fcr bestimmte Benutzer installiert werden, usw.<\/p>\n<p>Du brauchst den Systemadministrator nicht, um \u00c4nderungen an diesen Variablen vorzunehmen; das kannst du als Benutzer selbst tun. Diese Variablen sind hilfreich, wenn du lokale \u00c4nderungen an deinem System vornimmst, ohne dass andere Benutzer davon betroffen sind.<\/p>\n<h3>3. Laufzeit-\/Prozessumgebungsvariablen<\/h3>\n<p>Laufzeit-Umgebungsvariablen werden nur auf die Laufzeit oder den Prozess eingegrenzt, mit dem sie verbunden sind. Sie werden in der Regel von dem \u00fcbergeordneten Prozess gesetzt, der den neuen Prozess erstellt, und werden von den System- und Benutzerumgebungsvariablen begleitet.<\/p>\n<p>Du kannst Terminal-Skripte verwenden, um diese Variablen im laufenden Betrieb zu erstellen und zu speichern. Laufzeitvariablen sind in der Regel nicht dauerhaft, es sei denn, sie werden per Skript gesetzt, und du musst sie jedes Mal definieren, wenn du einen neuen Prozess startest.<\/p>\n<h3>Umgebungsvariablen in Unix-basierten Systemen<\/h3>\n<p>Im Gegensatz zu Windows-Systemen gibt es bei Unix-Systemen keine drei Schichten von Umgebungsvariablen. In solchen Systemen wird alles unter einem <code>var<\/code> Objekt gespeichert und kann von dem laufenden Programm aufgerufen\/ge\u00e4ndert werden.<\/p>\n<p>Wenn du einige Umgebungsvariablen als Standard festlegen m\u00f6chtest, die jedes Mal geladen werden, wenn ein Programm auf deinem System l\u00e4uft, musst du sie in Dateien wie <code>.~\/bashrc<\/code> oder <code>~.profile<\/code> definieren, die beim Hochfahren des Systems geladen werden.<\/p>\n<h3>Umgebungsvariablen vs. Pseudo-Umgebungsvariablen<\/h3>\n<p>In Windows- und DOS-basierten Systemen gibt es eine eigene Reihe von dynamischen Umgebungsvariablen, die so genannten Pseudo-Umgebungsvariablen. Dabei handelt es sich nicht um statisch zugewiesene Paare von Schl\u00fcsseln und Werten, sondern um dynamische Referenzen, die bei Abfrage verschiedene Werte zur\u00fcckgeben.<\/p>\n<p>W\u00e4hrend du einer Umgebungsvariablen manuell einen Wert zuweisen kannst, indem du den Befehl <code>SET<\/code> oder ein \u00e4hnliches Kommando verwendest, kannst du Pseudo-Umgebungsvariablen keine Werte zuweisen. Es gibt eine <a href=\"https:\/\/en.wikipedia.org\/wiki\/Environment_variable#Windows_2\" target=\"_blank\" rel=\"noopener noreferrer\">feste Liste<\/a> solcher Variablen, und du kannst sie in deinem Code verwenden, um dir die Arbeit zu erleichtern. Einige beliebte Anwendungsf\u00e4lle sind <code>%CD%<\/code> f\u00fcr das aktuelle Verzeichnis und <code>%TIME%<\/code> f\u00fcr die aktuelle Uhrzeit.<\/p>\n<h2>Warum solltest du Umgebungsvariablen verwenden?<\/h2>\n<p>Jetzt, wo du wei\u00dft, was eine Umgebungsvariable ist und welche verschiedenen Typen es gibt, ist es an der Zeit zu erfahren, warum du sie in deinen Anwendungen ausgiebig nutzen solltest.<\/p>\n<h3>Trennung der Bereiche<\/h3>\n<p>Einer der wichtigsten Gr\u00fcnde, warum du Umgebungsvariablen in deinen Anwendungen verwenden solltest, ist die Einhaltung eines beliebten und n\u00fctzlichen Designprinzips &#8211; der Trennung von Belangen. Dieses Prinzip besagt, dass Computerprogramme in verschiedene Abschnitte unterteilt werden sollten, um sie effizient zu verwalten. Jeder Abschnitt sollte sich auf eines der Hauptanliegen des Programms st\u00fctzen, und zwischen diesen Abschnitten sollte es nur eine minimale Kopplung geben.<\/p>\n<p>Die Anwendungskonfiguration kann als eines dieser Anliegen betrachtet werden und muss daher vom Hauptprogramm getrennt werden. Eine der besten M\u00f6glichkeiten daf\u00fcr ist, sie in einer externen Datei zu speichern und sie bei Bedarf einzubinden. Umgebungsvariablen helfen dir, kritische Daten zur Anwendungskonfiguration mithilfe von Umgebungsdateien oder externen Variablenspeichern zu isolieren. Auf diese Weise werden deinen Entwicklern nur die Informationen zur Verf\u00fcgung gestellt, die sie ben\u00f6tigen.<\/p>\n<h3>Unabh\u00e4ngige Konfigurationss\u00e4tze in verschiedenen Umgebungen aufrechterhalten<\/h3>\n<p>Du musst nicht nur die Anwendungskonfigurationen von deinem Quellcode isolieren, sondern auch in der Lage sein, problemlos zwischen den einzelnen Konfigurationsdaten zu wechseln. Wenn du deine App-Konfigurationswerte im Quellcode fest eintr\u00e4gst, kann es fast unm\u00f6glich sein, diese Werte je nach \u00e4u\u00dferen Bedingungen, wie z. B. der Einsatzumgebung, zu ersetzen.<\/p>\n<p>Die Verwendung von Umgebungsvariablen hilft dir dabei, deine Konfigurationsdaten von deinem Code zu entkoppeln und die Art und Weise zu standardisieren, wie diese Informationen deiner Anwendung zur Verf\u00fcgung gestellt werden, so dass du die bereitgestellten Informationen im Handumdrehen \u00e4ndern oder austauschen kannst.<\/p>\n<h3>Geheimnisse sichern<\/h3>\n<p>Die Geheimnisse deiner App fallen unter die sensiblen Informationen. Wenn die falschen Leute sie in die H\u00e4nde bekommen, k\u00f6nnen sie auf die interne Architektur deiner App und auf die Ressourcen Dritter zugreifen. H\u00e4ufige Beispiele sind AWS-Schl\u00fcssel und Systemkontodaten. Der unbefugte Zugriff auf diese Schl\u00fcssel kann zum Verlust von Geld und Anwendungsdaten f\u00fchren. Hacker k\u00f6nnen sogar so weit gehen, dass sie deine App am normalen Betrieb hindern.<\/p>\n<p>Deshalb ist es wichtig, dass du diese Geheimnisse sch\u00fctzt. Wenn du sie in deiner Codebasis herumliegen l\u00e4sst, kann das dazu f\u00fchren, dass alle deine Entwickler\/innen Zugang zu ihnen haben. Wenn du nicht die richtigen Methoden zur Codeverschleierung anwendest, k\u00f6nnen deine Anwendungen zur\u00fcckentwickelt werden, um an die Schl\u00fcssel in deinem Code zu gelangen. Die Isolierung dieser Geheimnisse durch Umgebungsvariablen kann solche Szenarien verhindern.<\/p>\n<h2>Beispiele f\u00fcr die Verwendung von Umgebungsvariablen<\/h2>\n<p>Nachdem du nun eine klare Vorstellung davon hast, wie Umgebungsvariablen funktionieren und wie du sie effektiv einsetzen solltest, folgen nun einige h\u00e4ufige Szenarien, in denen du Umgebungsvariablen verwenden kannst:<\/p>\n<ul>\n<li><strong>Umgebungstyp<\/strong>: Umgebungsvariablen werden oft verwendet, um den Namen der Umgebung zu speichern, in der die App gerade l\u00e4uft. Die Logik der App kann diesen Wert nutzen, um auf die richtigen Ressourcen zuzugreifen oder bestimmte Funktionen oder Bereiche der App zu aktivieren\/deaktivieren.<\/li>\n<li><strong>Domainname<\/strong>: Der Domainname einer Anwendung kann je nach Umgebung variieren. Wenn du ihn isolierst, kannst du den Domainnamen deiner Anwendung leicht \u00e4ndern, ohne ihn in der gesamten Codebasis suchen zu m\u00fcssen.<\/li>\n<li><strong>API-URLs<\/strong>: Jede Umgebung deiner Anwendung kann \u00fcber APIs verf\u00fcgen, die auch in anderen Umgebungen eingesetzt werden.<\/li>\n<li><strong>Private Schl\u00fcssel<\/strong>: Schl\u00fcssel zu bezahlten Diensten und Ressourcen m\u00fcssen vom Quellcode der App isoliert werden, damit sie nicht versehentlich in die falschen H\u00e4nde geraten.<\/li>\n<li><strong>Servicekontonummern usw.<\/strong>: Du kannst andere systemspezifische Informationen wie Servicekontonummern, Keytabs usw. je nach Umgebung der App f\u00fcr die Ressourcenverwaltung und -\u00fcberwachung variieren.<\/li>\n<\/ul>\n<h2>Wie man Umgebungsvariablen speichert<\/h2>\n<p>Jetzt, wo du wei\u00dft, warum Umgebungsvariablen wichtig sind, ist es an der Zeit, sich anzusehen, wie du sie in deiner Anwendung speichern und darauf zugreifen kannst. Im Folgenden werden drei verschiedene, aber beliebte Methoden zur Verwaltung von Umgebungsvariablen in einer Anwendung beschrieben.<\/p>\n<h3>.env-Dateien verwenden<\/h3>\n<p><code>.env<\/code> dateien sind zweifelsohne die einfachste und beliebteste Art, Umgebungsvariablen zu verwalten. Die Idee ist einfach: Du speicherst deine Umgebungsvariablen in einer Datei namens <code>.env<\/code> im Stammverzeichnis deines Projekts. Die Anwendung sucht nach den Variablen in dieser Datei und l\u00e4dt sie zur Verwendung w\u00e4hrend der Laufzeit. So sieht eine typische <code>.env<\/code> Datei aus:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO=SOME_KEY_HERE\nVAR_DOS=SOME_OTHER_KEY_HERE\n<\/code><\/pre>\n<p><code>.env<\/code> dateien erm\u00f6glichen es dir auch, Gruppen von Umgebungsvariablen zu definieren und auf sie basierend auf der Laufzeitumgebung deiner Anwendung oder anderen Faktoren zuzugreifen. Anstatt die Datei einfach als <code>.env<\/code> zu speichern, kannst du auch mehrere Dateien erstellen und sie als <code>.env.dev<\/code> und <code>.env.prod<\/code> speichern. In diesen Dateien kannst du dieselben Variablens\u00e4tze definieren, allerdings mit unterschiedlichen Werten, je nach Umgebung.<\/p>\n<h4>Beispiel Vorlage<\/h4>\n<p>Wenn du mit <code>.env<\/code> Dateien arbeitest, ist es nicht empfehlenswert, sie in dein Versionskontrollsystem aufzunehmen (mehr dazu sp\u00e4ter). Deshalb solltest du in deinem Projekt eine &#8222;.env.template&#8220; definieren, damit die Entwickler der Vorlage folgen und eine <code>.env<\/code> Datei f\u00fcr sich selbst lokal erstellen k\u00f6nnen.<\/p>\n<p>So w\u00fcrde eine <code>.env.template<\/code> Datei aussehen:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO= # Your value here\nVAR_DOS= # Your value here\n<\/code><\/pre>\n<p>Sie muss keinen Konventionen folgen, so lange sie f\u00fcr dein Entwicklungsteam selbsterkl\u00e4rend ist. Um diesen Prozess zu vereinfachen, kannst du auch Pakete wie <a href=\"https:\/\/www.npmjs.com\/package\/env-template\" target=\"_blank\" rel=\"noopener noreferrer\">env-template<\/a> verwenden.<\/p>\n<h4>Pro<\/h4>\n<p>Hier sind einige Gr\u00fcnde, warum du <code>.env<\/code> Dateien zur Verwaltung von Umgebungsvariablen in deiner App verwenden solltest.<\/p>\n<h5>Einfach zu verwenden<\/h5>\n<p>Diese Methode ist die einfachste in der Reihe der Techniken zur Verwaltung von Umgebungsvariablen. Alles, was du tun musst, ist, eine einfache Textdatei zu erstellen, die deine Geheimnisse enth\u00e4lt, und sie im Stammverzeichnis deines Projekts zu speichern.<\/p>\n<p>Der Wechsel der Umgebung ist so einfach wie das \u00c4ndern der env-Datei selbst. Du kannst mehrere Dateien unter den Namen <code>.env.dev<\/code>, <code>.env.prod<\/code>, <code>.env.uat<\/code> usw. speichern und deinen Quellcode so konfigurieren, dass er je nach Umgebung auf diese Dateien zugreift.<\/p>\n<h5>Lokaler Zugriff<\/h5>\n<p>Du kannst <code>.env<\/code> Dateien ganz einfach in einer lokalen Entwicklungsumgebung einrichten. Im Gegensatz zu plattformspezifischen Variablenmanagern musst du deine Anwendung nicht bereitstellen, um die Funktionen der Umgebungsvariablen zu nutzen. Im Vergleich zu Secret Managern lassen sich <code>.env<\/code> Dateien einfacher lokal einrichten, und es besteht keine Netzwerkabh\u00e4ngigkeit f\u00fcr den Zugriff auf die Secrets deiner App.<\/p>\n<h5>Open-Source-Unterst\u00fctzung<\/h5>\n<p>Es gibt zahlreiche Open-Source-Pakete, mit denen du App-Secrets aus <code>env<\/code> Dateien laden und verwalten kannst. Du bist weder auf kostenpflichtige Dienste angewiesen, noch sind deine M\u00f6glichkeiten bei der Verwaltung von App-Secrets begrenzt. Es gibt eine gro\u00dfe Auswahl an Open-Source-Bibliotheken von Drittanbietern, die dir bei der Verwaltung deiner Umgebungsdateien helfen. Einige beliebte und n\u00fctzliche Beispiele sind <a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>, <a href=\"https:\/\/www.npmjs.com\/package\/env-template\" target=\"_blank\" rel=\"noopener noreferrer\">env-template<\/a> und <a href=\"https:\/\/www.npmjs.com\/package\/cross-env\" target=\"_blank\" rel=\"noopener noreferrer\">cross-env<\/a>.<\/p>\n<h4>Nachteile<\/h4>\n<p>Hier sind einige Nachteile von env-Dateien, die du kennen solltest, bevor du sie in deinen Projekten einsetzt.<\/p>\n<h5>Formatierung<\/h5>\n<p><code>.env<\/code> dateien speichern die Geheimnisse deiner Anwendung in Form von Schl\u00fcssel-Wert-Paaren. Das \u00fcbliche Format f\u00fcr die Speicherung von Umgebungsvariablen in einer <code>.env<\/code> Datei ist:<\/p>\n<pre><code class=\"language-bash\">Key1=Value1\n<\/code><\/pre>\n<p>Du musst dich strikt an dieses Format halten, damit deine App deine App-Geheimnisse erfolgreich lesen kann. Wenn du irgendwo zwischen zehn oder hunderten von Zeilen mit Umgebungsvariablen einen kleinen Fehler machst, kann es sein, dass die gesamte Datei nicht geparst wird und dein Programm unzusammenh\u00e4ngende Fehler ausgibt. Die Tatsache, dass es einen Parsing-Fehler in deiner <code>.env<\/code> Datei gibt, wird vielleicht nicht einmal hervorgehoben. Aus diesem Grund musst du bei der Verwendung von <code>.env<\/code> Dateien vorsichtig sein.<\/p>\n<h5>Anf\u00e4llig f\u00fcr unbeabsichtigte Geheimnistr\u00e4ger beim Teilen\/Speichern<\/h5>\n<p>Da es sich bei <code>.env<\/code> Dateien um reine Textdateien handelt, sind sie anf\u00e4llig f\u00fcr eine versehentliche Preisgabe, wenn sie auf einer gemeinsam genutzten Festplatte gespeichert oder \u00fcber ein ungesichertes Netzwerk verschickt werden. Deshalb musst du besonders darauf achten, dass deine App-Geheimnisse nicht nach au\u00dfen dringen, wenn du sie in <code>.env<\/code> Dateien gespeichert hast.<\/p>\n<h3>Plattformspezifische Variablenspeicherung verwenden<\/h3>\n<p>Eine weitere beliebte Option f\u00fcr die Speicherung von Umgebungsvariablen ist die Verwendung des Variablenspeichers deiner Bereitstellungsplattform. Die meisten Bereitstellungsplattformen wie Heroku, <a href=\"https:\/\/kinqsta.com\/de\/aws-alternative\/\">AWS<\/a>, Netlify usw. bieten einen Bereich, in den Nutzer\/innen Geheimnisse hochladen k\u00f6nnen, die sp\u00e4ter in die Laufzeit deiner Anwendung eingef\u00fcgt werden. Du kannst in der Dokumentation deiner Bereitstellungsplattform nachsehen, ob sie diese Funktion unterst\u00fctzt und wie du sie nutzen kannst.<\/p>\n<p>Hier ist ein kurzer Blick auf den Umgebungsvariablen-Manager von Netlify:<\/p>\n<figure id=\"attachment_125214\" aria-describedby=\"caption-attachment-125214\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125214 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/netlify-environment-variable-manager-1024x627.png\" alt=\"Screenshot des Netlify-Managers f\u00fcr Umgebungsvariablen mit einer editierbaren Liste von Schl\u00fcsseln und Werten\" width=\"1024\" height=\"627\"><figcaption id=\"caption-attachment-125214\" class=\"wp-caption-text\">Netlifys Umgebungsvariablen-Manager.<\/figcaption><\/figure>\n<h4>Pro<\/h4>\n<p>Hier sind die Gr\u00fcnde, warum du plattformspezifische L\u00f6sungen zur Speicherung von Variablen in Betracht ziehen solltest.<\/p>\n<h5>Hochgradig sicher<\/h5>\n<p>Da diese Option vollst\u00e4ndig von deiner Bereitstellungsplattform verwaltet wird, ist sie mit Sicherheit sicherer als die Speicherung deiner Geheimnisse in einer <a href=\"https:\/\/kinqsta.com\/de\/blog\/besten-texteditoren\/\">einfachen Textdatei<\/a>. Du kannst kontrollieren, wer Zugriff auf den Variablenmanager hat, und du kannst sicher sein, dass die Geheimnisse nicht versehentlich in dein VCS \u00fcbertragen werden.<\/p>\n<h5>Einfach zu aktualisieren<\/h5>\n<p>Die Aktualisierung der Umgebungsvariablen ist einfacher, wenn sie unabh\u00e4ngig gespeichert werden &#8211; du musst deinen Quellcode nicht bearbeiten und eine neue Version daf\u00fcr erstellen. Du kannst einfach die Werte in der Plattform \u00e4ndern und dein Projekt neu erstellen. Beim n\u00e4chsten Start erh\u00e4lt es dann die neuen Werte.<\/p>\n<p>Auch Formatierungsprobleme geh\u00f6ren der Vergangenheit an, da die meisten plattformspezifischen Deployment Manager die Schl\u00fcssel bei der Eingabe f\u00e4rben. In F\u00e4llen wie dem von Netlify gibst du die Geheimnisse in einer vorformatierten Form ein, so dass die Gefahr eines Formatierungsfehlers ausgeschlossen ist.<\/p>\n<h5>Erm\u00f6glicht Kollaboration<\/h5>\n<p>Da dein gesamtes Team auf die Verteilungsplattformen zugreifen kann, kannst du die Geheimnisse ganz einfach mit den richtigen Personen teilen, ohne dass du Textdateien \u00fcber das Internet verschicken musst. Du kannst bestimmen, wer auf den Variablenmanager zugreifen darf (in den meisten F\u00e4llen) und ihn als zentrales Repository f\u00fcr deine App-Geheimnisse nutzen.<\/p>\n<h4>Nachteile<\/h4>\n<p>Obwohl plattformspezifische Variablenmanager genau die L\u00f6sung zu sein scheinen, die du brauchst, gibt es ein paar Dinge, die du beachten solltest, bevor du dich f\u00fcr sie entscheidest.<\/p>\n<h5>Plattformabh\u00e4ngig<\/h5>\n<p>Wie ihr Name schon sagt, sind sie sehr spezifisch f\u00fcr die Plattform, die du verwendest. In manchen F\u00e4llen bietet deine Bereitstellungsplattform einen solchen Dienst gar nicht an. Ein Wechsel deiner Einsatzplattform, um Zugang zu einem solchen Dienst zu erhalten, ist vielleicht nicht die beste Entscheidung.<\/p>\n<h5>Uneinheitlich<\/h5>\n<p>Da sie vollst\u00e4ndig von der Bereitstellungsplattform angeboten und verwaltet werden, k\u00f6nnen solche Dienste sehr uneinheitlich sein. Die \u00dcbertragung von Variablen von einer Plattform auf eine andere kann problematisch sein. Du kannst nicht einmal davon ausgehen, dass jede Bereitstellungsplattform die M\u00f6glichkeit bietet, Umgebungsvariablen zu importieren\/exportieren. Die meisten tun dies zwar, aber es liegt ganz in der Hand der Plattform. Wenn du eine lange Liste von Umgebungsvariablen hast, ist die Wahrscheinlichkeit gro\u00df, dass du in eine kleine Anbieterbindung ger\u00e4tst.<\/p>\n<h5>Keine lokale Unterst\u00fctzung<\/h5>\n<p>W\u00e4hrend solche Dienste f\u00fcr den Zugriff auf Umgebungsvariablen in den Deployments deiner App gut geeignet sind, kannst du sie bei der lokalen Entwicklung deiner App nur selten nutzen. In den meisten F\u00e4llen musst du auf die Verwaltung lokaler <code>.env<\/code> Dateien zur\u00fcckgreifen. Das erf\u00fcllt zwar den Zweck, verkompliziert aber die ganze Einrichtung unn\u00f6tig.<\/p>\n<h3>Verwendung von Secret Managern<\/h3>\n<p>Die dritte Option, die sich noch in der Entwicklungsphase befindet, ist der Einsatz von speziellen Secret Managern. Secret Manager sind Dienste von Drittanbietern, die es dir erm\u00f6glichen, die Geheimnisse deiner App vollst\u00e4ndig von deinem Quellcode bzw. deinem Deployment zu isolieren und sie bei Bedarf \u00fcber sichere Netzwerkverbindungen abzurufen.<\/p>\n<h4>Pro<\/h4>\n<p>Hier sind einige der Vorteile, die Secret Manager gegen\u00fcber anderen Methoden der Geheimnisverwaltung bieten.<\/p>\n<h5>Hochgradig sicher<\/h5>\n<p>Da deine Geheimnisse in einem vollst\u00e4ndig isolierten Dienst gespeichert werden, kannst du sicher sein, dass du sie nicht versehentlich preisgibst, wenn du sie mit deinen Kollegen oder \u00fcber Versionskontroll\u00fcbertragungen teilst. Die Plattform des Drittanbieters k\u00fcmmert sich um die Sicherheit deiner Geheimnisse und hat in der Regel sehr strenge SLAs, wenn es um die Datensicherheit geht.<\/p>\n<p>Selbst wenn du von deiner Anwendung aus auf die Geheimnisse zugreifst, bieten die meisten Geheimnisverwalter einen eigenen Client-Code an, der die Geheimnisse bei Bedarf <a href=\"https:\/\/kinqsta.com\/de\/blog\/cloud-sicherheit\/\">sicher abrufen<\/a> und den Zugriff darauf erm\u00f6glichen kann.<\/p>\n<h5>Einheitlich in verschiedenen Umgebungen<\/h5>\n<p>Da die Geheimnisse jetzt unabh\u00e4ngig von deiner Codebasis und deinen Einsatzumgebungen sind, kannst du sie in allen Umgebungen einheitlich nutzen. Du musst keine besonderen Vorkehrungen f\u00fcr das Onboarding neuer Entwickler\/innen treffen oder besondere Schritte unternehmen, bevor du deine App in die Produktion \u00fcberf\u00fchrst &#8211; die meisten dieser Aspekte werden vereinfacht oder von deinem Secrets Manager \u00fcbernommen.<\/p>\n<h4>Nachteile<\/h4>\n<p>Obwohl Secrets Manager die bestm\u00f6gliche L\u00f6sung f\u00fcr die Verwaltung von Umgebungsvariablen zu sein scheinen, haben sie auch ihre Probleme.<\/p>\n<h5>Kosten<\/h5>\n<p>Die Verwaltung von Umgebungsvariablen ist seit langem eine interne Aktivit\u00e4t innerhalb von Projekten. Sogar die meisten Bereitstellungsplattformen bieten diese Funktion kostenlos an, da ihnen keine zus\u00e4tzlichen Kosten daf\u00fcr entstehen.<\/p>\n<p>Da es sich bei den Secret Managern jedoch um v\u00f6llig unabh\u00e4ngige Dienste handelt, haben sie ihre eigenen Betriebskosten. Daher m\u00fcssen die Nutzer\/innen diese Kosten tragen, wenn sie diese Dienste nutzen.<\/p>\n<h5>Fr\u00fche Stadien der Technologie<\/h5>\n<p>Da die Technologie noch relativ neu ist, kann man nie sicher sein, wie gut sie in den n\u00e4chsten Tagen von der Branche angenommen wird. Auch wenn geheime Manager in Bezug auf Sicherheit und einfache Verwaltung sehr vielversprechend sind, k\u00f6nnten der Kostenfaktor und die Bedenken bez\u00fcglich der Datenverarbeitung dazu f\u00fchren, dass die Technologie nur langsam angenommen wird.<\/p>\n<h2>Wie man mit Umgebungsvariablen arbeitet<\/h2>\n<p>Nachdem du nun das Konzept der Umgebungsvariablen und die M\u00f6glichkeiten, sie in eine App zu implementieren, verstanden hast, schauen wir uns an, wie du mit ihnen \u00fcber das Terminal und in <a href=\"https:\/\/kinqsta.com\/de\/blog\/node-js-apps\/\">Node.js-basierten Apps<\/a> arbeiten kannst.<\/p>\n<h3>Umgebungsvariablen im Terminal<\/h3>\n<p>Da Umgebungsvariablen prozessspezifisch sind, kannst du sie \u00fcber das Terminal setzen und l\u00f6schen, damit sie an die Prozesse weitergegeben werden, die dein Terminal startet.<\/p>\n<h4>Variablenwerte finden<\/h4>\n<p>Um die Liste der Umgebungsvariablen in deinem Terminal anzuzeigen, kannst du die folgenden, f\u00fcr dein Betriebssystem spezifischen Befehle ausf\u00fchren.<\/p>\n<p>Unter Windows:<\/p>\n<pre><code class=\"language-bash\">set\n<\/code><\/pre>\n<p>Unter Linux oder MacOS:<\/p>\n<pre><code class=\"language-bash\">env\n<\/code><\/pre>\n<p>Damit wird eine Liste aller verf\u00fcgbaren Umgebungsvariablen in deinem laufenden Terminal ausgegeben.<\/p>\n<h4>Neue Variablen setzen<\/h4>\n<p>Um neue Variablen \u00fcber das Terminal zu setzen, kannst du die folgenden Befehle ausf\u00fchren.<\/p>\n<p>Unter Windows:<\/p>\n<pre><code class=\"language-bash\">set \"VAR_NAME=var_value\"\n<\/code><\/pre>\n<p>Unter Linux oder MacOS:<\/p>\n<pre><code class=\"language-bash\">VAR_NAME=var_value\n<\/code><\/pre>\n<h4>L\u00f6schen von Variablen<\/h4>\n<p>Um eine Umgebungsvariable zu l\u00f6schen, musst du die folgenden Befehle ausf\u00fchren.<\/p>\n<p>Unter Windows:<\/p>\n<pre><code class=\"language-bash\">set \"VAR_NAME=\"\n<\/code><\/pre>\n<p>Unter Linux oder MacOS:<\/p>\n<pre><code class=\"language-bash\">unset VAR_NAME\n<\/code><\/pre>\n<p>Bitte beachte, dass die oben beschriebenen Methoden nur f\u00fcr das Erstellen\/L\u00f6schen von Umgebungsvariablen f\u00fcr die aktuelle Sitzung des Terminals gelten.<\/p>\n<h3>Umgebungsvariablen in Node.js<\/h3>\n<p><a href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-javascript\/\">JavaScript<\/a> ist derzeit eine der beliebtesten Programmiersprachen. Sie wird sowohl f\u00fcr die Entwicklung von Backend- als auch von <a href=\"https:\/\/kinqsta.com\/de\/blog\/frontend-entwickler\/\">Front-End-Anwendungen<\/a> verwendet und ist damit eine der vielseitigsten Programmiersprachen.<\/p>\n<p><a href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-node-js\/\">Node.js<\/a> geh\u00f6rt zu den am h\u00e4ufigsten verwendeten <a href=\"https:\/\/kinqsta.com\/de\/blog\/javascript-bibliotheken\/\">JS-Frameworks<\/a> f\u00fcr die Erstellung von Backend-Anwendungen. Schauen wir uns an, wie du Umgebungsvariablen in Node.js-basierten Anwendungen einfach handhaben kannst.<\/p>\n<h4>Direkter Zugriff auf Umgebungsvariablen<\/h4>\n<p>Node.js bietet dir \u00fcber <code>process.env<\/code> einen Verweis auf die Umgebungsvariablen deines aktuellen Prozesses. Du kannst die verf\u00fcgbaren Umgebungsvariablen einsehen, indem du dieses Objekt auf der Konsole ausgibst.<\/p>\n<figure id=\"attachment_125215\" aria-describedby=\"caption-attachment-125215\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125215 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/printing-process-env-1024x579.png\" alt=\"Die Ausgabe der Node.js-App auf dem Terminal zeigt eine Liste der verf\u00fcgbaren Umgebungsvariablen.\" width=\"1024\" height=\"579\"><figcaption id=\"caption-attachment-125215\" class=\"wp-caption-text\">Drucken des process.env-Objekts.<\/figcaption><\/figure>\n<p>Dieses Objekt enth\u00e4lt Variablen, die f\u00fcr den laufenden Node-Prozess verf\u00fcgbar sind. Du kannst neue Variablen hinzuf\u00fcgen, indem du sie vor der Ausf\u00fchrung deiner App deklarierst, \u00e4hnlich wie hier:<\/p>\n<pre><code class=\"language-bash\">VAR_UNO=SOMETHING node index.js\n<\/code><\/pre>\n<figure id=\"attachment_125216\" aria-describedby=\"caption-attachment-125216\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125216 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/printing-process-env-new-variable-1024x614.png\" alt=\"Die Ausgabe der Node.js-App auf dem Terminal zeigt eine Liste der verf\u00fcgbaren Umgebungsvariablen und die neu hinzugef\u00fcgte Variable am oberen Rand.\" width=\"1024\" height=\"614\"><figcaption id=\"caption-attachment-125216\" class=\"wp-caption-text\">Drucken des process.env-Objekts nach dem Hinzuf\u00fcgen einer neuen Variable.<\/figcaption><\/figure>\n<p>Wie du sehen kannst, wird die neue Variable zu deinem <code>process.env<\/code> Objekt hinzugef\u00fcgt. Allerdings kannst du mit dieser Methode nicht auf Variablen zugreifen, die unter einer <code>.env<\/code> Datei definiert sind. Dazu musst du ein Paket wie <code>dotenv<\/code> verwenden, um die Datei <code>.env<\/code> zur Laufzeit zu laden.<\/p>\n<h4>Das Paket dotenv f\u00fcr den Zugriff auf .env-Dateien verwenden<\/h4>\n<p>Das Paket <code>dotenv<\/code> hilft dir, Umgebungsvariablen zu laden, die in <code>.env<\/code> Dateien im Stammverzeichnis deines Projekts gespeichert sind. Seine Verwendung ist einfach: Du musst es mit dem folgenden Befehl installieren:<\/p>\n<pre><code class=\"language-bash\">npm i dotenv@16.0.0\n<\/code><\/pre>\n<p>Als N\u00e4chstes musst du die folgende Codezeile am Anfang des Codes deiner Anwendung einf\u00fcgen, um das Paket zu initialisieren:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config()\n<\/code><\/pre>\n<p>Das war&#8217;s! Jetzt werden die Geheimnisse, die du in einer <code>.env<\/code> Datei im Stammverzeichnis deines Projekts gespeichert hast, in dein <code>process.env<\/code> Objekt geladen, sobald die App startet. Wir werden diese Methode sp\u00e4ter im folgenden Lernprogramm in Aktion sehen.<\/p>\n<h2>Tutorial zu Umgebungsvariablen<\/h2>\n<p>Der beste Weg, ein technisches Konzept zu verstehen, ist, es in Aktion zu sehen. Hier ist ein kurzes Tutorial, das dir hilft, mit Umgebungsvariablen umzugehen und ihre Verwendung im Detail zu lernen.<\/p>\n<p>In der folgenden Anleitung zeigen wir dir, wie du Umgebungsvariablen auf die drei oben genannten Arten nutzen kannst:<code>.env<\/code> Dateien, plattformspezifische Variablenmanager und geheime Manager. Alle diese Wege erfordern einen gemeinsamen Schritt, n\u00e4mlich die Einrichtung eines einfachen Node.js-Projekts.<\/p>\n<h3>Erstens: Ein Node.js-Projekt erstellen<\/h3>\n<p>Stelle zun\u00e4chst sicher, dass du <a href=\"https:\/\/kinqsta.com\/de\/blog\/so-installierst-du-node-js\/\">Node.js auf deinem System installiert hast<\/a>. Sobald du Node.js auf deinem System eingerichtet hast, hast du Zugriff auf npm (kurz f\u00fcr Node Package Manager). npm hilft dir, Node-Pakete aus der globalen npm-Registry \u00fcber die Kommandozeile zu installieren. Das ist besonders n\u00fctzlich, wenn du Pakete f\u00fcr unser Testprojekt installieren willst.<\/p>\n<p>Als n\u00e4chstes \u00f6ffnest du ein Terminal und erstellst ein neues Verzeichnis. Lege darin ein neues Node-Projekt an:<\/p>\n<pre><code class=\"language-bash\">mkdir my-app\ncd my-app\nnpm init\n<\/code><\/pre>\n<p>Dr\u00fccke bei den eingehenden Fragen immer wieder die Eingabetaste, um die Standardoptionen zu akzeptieren. Danach sieht dein Terminal etwa so aus:<\/p>\n<figure id=\"attachment_125217\" aria-describedby=\"caption-attachment-125217\" style=\"width: 1011px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125217 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/creating-new-project-1011x1024.png\" alt=\"Die Terminalausgabe zeigt die Schritte, die zur Initialisierung einer neuen Node-App f\u00fchren.\" width=\"1011\" height=\"1024\"><figcaption id=\"caption-attachment-125217\" class=\"wp-caption-text\">Ein neues Projekt erstellen.<\/figcaption><\/figure>\n<p>Jetzt kannst du dieses Projekt mit einer IDE wie Visual Studio Code oder IntelliJ IDEA \u00f6ffnen.<\/p>\n<p>Erstelle eine neue Datei im Stammverzeichnis deines Projektordners und speichere sie unter dem Namen <code>index.js<\/code>. Dies wird der Ausgangspunkt f\u00fcr deine Anwendung sein. Als N\u00e4chstes installierst du Express, um schnell REST-Server zu erstellen und zu testen:<\/p>\n<pre><code class=\"language-bash\">npm i express\n<\/code><\/pre>\n<p>Sobald du Express installiert hast, f\u00fcge den folgenden Code in deine <code>index.js<\/code> Datei ein:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n   res.send(\"Hello world!\")\n})\n\napp.listen(8080);\n<\/code><\/pre>\n<p>Dies ist ein erstes Snippet f\u00fcr einen einfachen &#8222;Hello World&#8220;-Endpunkt mit Node.js und Express. F\u00fchre den folgenden Code in deiner Kommandozeile aus:<\/p>\n<pre><code class=\"language-bash\">node index.js\n<\/code><\/pre>\n<p>Damit startest du deine Node + Express App. Wenn du in deinem Webbrowser zu http:\/\/localhost:8080 navigierst, erh\u00e4ltst du eine \u00e4hnliche Ausgabe:<\/p>\n<figure id=\"attachment_125218\" aria-describedby=\"caption-attachment-125218\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125218 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/hello-world.png\" alt=\"Der Text \"Hello World!\" wird auf eine leere HTML-Seite gegeben.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125218\" class=\"wp-caption-text\">Printing Hello World!<\/figcaption><\/figure>\n<p>Das zeigt dir, dass du deine App richtig eingerichtet hast! Im n\u00e4chsten Schritt musst du deine App so anpassen, dass sie Umgebungsvariablen verwendet. \u00c4ndere den Code in <code>index.js<\/code> so ab, dass er dem folgenden Schnipsel entspricht:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n  \n   \/\/ the responseMessage object extracts its values from environment variables\n   \/\/ If a value is not found, it instead stores the string \"not found\"\n   const responseMessage = {\n       environment: process.env.environment || \"Not found\",\n       apiBaseUrl: process.env.apiBaseUrl || \"Not found\"\n   }\n\n   res.send(responseMessage)\n})\n\napp.listen(8080);\n<\/code><\/pre>\n<p>Statt einer &#8222;Hello world!&#8220;-Nachricht in der Antwort senden wir jetzt ein JSON-Objekt, das zwei Informationen enth\u00e4lt:<\/p>\n<ul>\n<li><code>environment<\/code>: Zeigt die aktuelle Umgebung an, in der die App eingesetzt wird<\/li>\n<li><code>apiBaseUrl<\/code>: \u00dcbertr\u00e4gt die Basis-URL f\u00fcr eine hypothetische API. Wir werden den Wert dieser URL je nach der Umgebung, in der die App eingesetzt wird, \u00e4ndern.<\/li>\n<\/ul>\n<p>Falls wir nicht auf die Umgebungsvariablen zugreifen k\u00f6nnen, enth\u00e4lt das Objekt &#8222;Not found&#8220; als Werte f\u00fcr die beiden oben beschriebenen Schl\u00fcssel. Bevor du weitermachst, f\u00fchre den Befehl <code>node index.js<\/code> erneut aus und du erh\u00e4ltst die folgende Ausgabe:<\/p>\n<figure id=\"attachment_125220\" aria-describedby=\"caption-attachment-125220\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125220 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/env-apibaseurl-not-found-1.png\" alt=\"n JSON-Objekt mit zwei Schl\u00fcsseln environment und apiBaseUrl mit den Werten \"Not found\" wird auf einer leeren HTML-Seite ausgegeben.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125220\" class=\"wp-caption-text\">Drucken der Standardwerte f\u00fcr die <code>env<\/code> Variablen.<\/figcaption><\/figure>\n<p>Das bedeutet, dass deine App derzeit nicht auf die Umgebungsvariablen zugreifen kann. Au\u00dferdem haben wir noch nicht einmal die Werte f\u00fcr diese Variablen definiert. In den n\u00e4chsten Abschnitten sehen wir uns die verschiedenen M\u00f6glichkeiten an, dies zu tun.<\/p>\n<h3>Typ 1: Umgebungsvariablen \u00fcber env-Dateien hinzuf\u00fcgen<\/h3>\n<p>Beginnen wir mit der einfachsten Art, Umgebungsvariablen hinzuzuf\u00fcgen &#8211; env-Dateien. Erstelle im Stammverzeichnis deines Projekts eine neue Datei namens <code>.env<\/code> und speichere den folgenden Code darin:<\/p>\n<pre><code class=\"language-bash\">environment=DEV\napiBaseUrl=http:\/\/dev.myApi.com:8080\/v1\n<\/code><\/pre>\n<p>Starte deine App neu, indem du den Befehl <code>node index.js<\/code> noch einmal ausf\u00fchrst und \u00fcberpr\u00fcfe die Ausgabe:<\/p>\n<figure id=\"attachment_125220\" aria-describedby=\"caption-attachment-125220\" style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125220 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/env-apibaseurl-not-found-1.png\" alt=\"Ein JSON-Objekt mit zwei Schl\u00fcsseln environment und apiBaseUrl mit den Werten \"Not found\" wird auf einer leeren HTML-Seite ausgegeben.\" width=\"902\" height=\"448\"><figcaption id=\"caption-attachment-125220\" class=\"wp-caption-text\">Ausgabe der Werte f\u00fcr die Variablen <code>env<\/code>.<\/figcaption><\/figure>\n<p>Du wirst feststellen, dass die Ausgabe immer noch die gleiche ist. Das liegt daran, dass du zwar die Werte der Umgebungsvariablen definiert hast, aber deiner Anwendung nicht wirklich gesagt hast, wo sie sie finden kann. An dieser Stelle kommen Pakete wie <code>dotenv<\/code> ins Spiel.<\/p>\n<p>F\u00fchre den folgenden Befehl aus, um <code>dotenv<\/code> zu installieren:<\/p>\n<pre><code class=\"language-bash\">npm i dotenv@16.0.0\n<\/code><\/pre>\n<p>Um <code>dotenv<\/code> in deinem Code zu verwenden, f\u00fcge den folgenden Code in Zeile 2 deiner index.js ein:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config()\n<\/code><\/pre>\n<p>Starte dann die App neu und pr\u00fcfe die Ausgabe:<\/p>\n<figure id=\"attachment_125221\" aria-describedby=\"caption-attachment-125221\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125221 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/env-dev-apibaseurl-dev-myapi-com-1024x433.png\" alt=\"Ein JSON-Objekt mit zwei Schl\u00fcsseln environment und apiBaseUrl mit den Werten DEV und http:\/\/dev.myApi.com:8080\/v1 wird auf einer leeren HTML-Seite ausgegeben.\" width=\"1024\" height=\"433\"><figcaption id=\"caption-attachment-125221\" class=\"wp-caption-text\">Ausgabe der neuen Werte f\u00fcr die Variablen <code>env<\/code>.<\/figcaption><\/figure>\n<p>Wie du sehen kannst, wurden die Werte f\u00fcr die Umgebungsvariablen aus deiner <code>.env<\/code> Datei geladen!<\/p>\n<p>Um die Sache etwas aufzupeppen, benennen wir unsere Datei <code>.env<\/code> in <code>.env.dev<\/code> um und erstellen eine weitere Datei mit dem Namen <code>.env.staging<\/code>. F\u00fcge das folgende St\u00fcck Code in die neue Datei ein:<\/p>\n<pre><code class=\"language-bash\">environment=STAGING\napiBaseUrl=http:\/\/staging.myApi.com:3000\/v1\n<\/code><\/pre>\n<p>Wenn du damit fertig bist, ersetze die Zeile Nummer 2 deiner <code>index.js<\/code> Datei durch den folgenden Code:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config({\n   path: \"STAGING\" === process.env.NODE_ENV?.toUpperCase() ? '.\/.env.staging' : '.\/.env.dev'\n})\n\nconsole.log(process.env.NODE_ENV)\n<\/code><\/pre>\n<p>Was sich hier ge\u00e4ndert hat, ist, dass wir jetzt das Paket <code>dotenv<\/code> anweisen, den Inhalt der Umgebungsvariablen aus einer der beiden verf\u00fcgbaren Dateien zu holen, die auf einer anderen Umgebungsvariablen namens <code>NODE_ENV<\/code> basiert. Woher kommt der Wert dieser Umgebungsvariablen? Deinem Terminal.<\/p>\n<p>Um diese Einrichtung zu testen, f\u00fchre deine App mit dem folgenden Befehl aus:<\/p>\n<pre><code class=\"language-bash\">NODE_ENV=DEV node index.js\n<\/code><\/pre>\n<p>Wenn du jetzt localhost:8080 aufrufst, wirst du die folgende Antwort erhalten:<\/p>\n<figure id=\"attachment_125221\" aria-describedby=\"caption-attachment-125221\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125221 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/env-dev-apibaseurl-dev-myapi-com-1024x433.png\" alt=\"Ein JSON-Objekt mit zwei Schl\u00fcsseln environment und apiBaseUrl mit den Werten DEV und http:\/\/dev.myApi.com:8080\/v1 wird auf einer leeren HTML-Seite ausgegeben.\" width=\"1024\" height=\"433\"><figcaption id=\"caption-attachment-125221\" class=\"wp-caption-text\">Druckt die env-Werte f\u00fcr die Entwicklungsumgebung.<\/figcaption><\/figure>\n<p>Beende nun die laufende App und starte sie erneut mit dem folgenden Befehl:<\/p>\n<pre><code class=\"language-bash\">NODE_ENV=STAGING node index.js\n<\/code><\/pre>\n<p>Wenn du localhost:8080 aufrufst, erh\u00e4ltst du die folgende Antwort:<\/p>\n<figure id=\"attachment_125222\" aria-describedby=\"caption-attachment-125222\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125222 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/dev-staging-apibaseurl-staging-myapi-com-1024x386.png\" alt=\"Ein JSON-Objekt mit den Schl\u00fcsseln environment und apiBaseUrl und den Werten STAGING und http:\/\/staging.myApi.com:3000\/v1 wird jeweils auf einer leeren HTML-Seite ausgegeben.\" width=\"1024\" height=\"386\"><figcaption id=\"caption-attachment-125222\" class=\"wp-caption-text\">Drucken der env-Werte f\u00fcr die Staging-Umgebung.<\/figcaption><\/figure>\n<p>So kannst du die <code>.env<\/code> Dateien verwenden, um auf verschiedene Variablens\u00e4tze zuzugreifen, die von externen Bedingungen abh\u00e4ngen. Die externe Bedingung ist hier die externe Umgebungsvariable <code>NODE_ENV<\/code>, die im Wesentlichen eine Benutzerumgebungsvariable ist, w\u00e4hrend <code>environment<\/code> und <code>apiBaseUrl<\/code> Laufzeitumgebungsvariablen waren. Das aufrufende Benutzerprofil liefert den Wert der Variable <code>NODE_ENV<\/code> und die App nutzt ihn, um interne Entscheidungen zu treffen.<\/p>\n<p>Wenn du unter Windows arbeitest, k\u00f6nntest du beim Ausf\u00fchren der beiden vorherigen Befehle auf Schwierigkeiten sto\u00dfen. Das Windows-Terminal l\u00e4sst es m\u00f6glicherweise nicht zu, dass du Benutzerumgebungsvariablen mit der Syntax <code>KEY=VALUE<\/code> zuweist (es sei denn, es handelt sich um Bash unter Windows).<\/p>\n<p>Eine schnelle L\u00f6sung ist in diesem Fall die Verwendung von Skripten und <code>cross-env<\/code>.<\/p>\n<p>Installiere <code>cross-env<\/code>, indem du den folgenden Befehl ausf\u00fchrst:<\/p>\n<pre><code class=\"language-bash\">npm i --save-dev cross-env\n<\/code><\/pre>\n<p>Als N\u00e4chstes gehst du zu deiner Datei <code>package.json<\/code> und \u00e4nderst den Schl\u00fcssel <code>scripts<\/code> entsprechend:<\/p>\n<pre><code class=\"language-json\">\/\/ \u2026\n\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start-dev\": \"cross-env NODE_ENV=DEV node index.js\",\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n\/\/ \u2026\n<\/code><\/pre>\n<p>Jetzt kannst du die folgenden Befehle ausf\u00fchren, um deine App mit zwei verschiedenen Sets von Umgebungsvariablen zu starten:<\/p>\n<pre><code class=\"language-bash\">npm run start-dev\t\t# to start with dev variables\nnpm run start-staging\t\t# to start with staging variables\n<\/code><\/pre>\n<p>Dies ist eine universelle L\u00f6sung und du kannst diese Skripte auch unter bash\/zsh verwenden.<\/p>\n<p>Als N\u00e4chstes sehen wir uns an, wie du einen Variablenmanager eines Drittanbieters verwenden kannst.<\/p>\n<h3>Typ 2: Native Umgebungsvariablenverwaltung von Heroku verwenden<\/h3>\n<p>Um diesem Teil des Tutorials folgen zu k\u00f6nnen, brauchst du ein Heroku-Konto. Lege ihn an, bevor du fortf\u00e4hrst.<\/p>\n<p>Bevor du die App auf Heroku bereitstellst, musst du ein paar \u00c4nderungen an deinem Code vornehmen. Als Erstes f\u00fcgst du ein neues Skript namens start in dein <code>package.json<\/code> ein:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start\": \"node index.js\",\n   \"start-dev\": \"cross-env NODE_ENV=DEV node index.js\",\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n<\/code><\/pre>\n<p>Dieses Skript wird von Heroku verwendet, um deine App zu starten, sobald sie bereitgestellt ist. Au\u00dferdem musst du die letzte Zeile deiner <code>index.js<\/code> Datei wie folgt \u00e4ndern:<\/p>\n<pre><code class=\"language-js\">app.listen(process.env.PORT || 3000);\n<\/code><\/pre>\n<p>Damit wird sichergestellt, dass die App auf dem von Heroku angegebenen Port bereitgestellt wird.<\/p>\n<p>Als N\u00e4chstes musst du <a href=\"https:\/\/devcenter.heroku.com\/articles\/heroku-cli#install-the-heroku-cli\">das Heroku CLI lokal installieren<\/a>, damit du von deiner Kommandozeile aus auf deine Heroku-Apps zugreifen kannst. F\u00fcr dieses Tutorial kannst du den folgenden Befehl verwenden, um das CLI zu installieren:<\/p>\n<pre><code class=\"language-bash\">npm i -g heroku\n<\/code><\/pre>\n<p>In der Heroku-Dokumentation wird jedoch empfohlen, die Installation \u00fcber einen der anderen Wege vorzunehmen, die unter dem oben genannten Link aufgef\u00fchrt sind, um eine bessere Unterst\u00fctzung zu erhalten. Nach der Installation f\u00fchrst du den folgenden Befehl aus, um dich bei deinem Heroku-Konto anzumelden:<\/p>\n<pre><code class=\"language-bash\">heroku login\n<\/code><\/pre>\n<p>Gehe dann zu dashboard.heroku.com und logge dich in dein Konto ein. Als n\u00e4chstes erstellst du eine neue App, indem du auf <strong>Neu<\/strong> &gt; <strong>Neue App erstellen<\/strong> klickst.<\/p>\n<figure id=\"attachment_125224\" aria-describedby=\"caption-attachment-125224\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125224 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-new-app-1024x250.png\" alt=\"Das Dashboard von Heroku mit dem neuen Dropdown, das die Option zum Erstellen einer neuen App anzeigt.\" width=\"1024\" height=\"250\"><figcaption id=\"caption-attachment-125224\" class=\"wp-caption-text\">Erstellen einer neuen App.<\/figcaption><\/figure>\n<p>Auf der n\u00e4chsten Seite klickst du auf die Schaltfl\u00e4che <strong>App erstellen<\/strong>, ohne irgendwelche Details einzugeben. Dadurch wird eine neue heroku App mit einem zuf\u00e4lligen Namen f\u00fcr dich erstellt.<\/p>\n<figure id=\"attachment_125225\" aria-describedby=\"caption-attachment-125225\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125225 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-naming-app-1024x371.png\" alt=\"Ein Formular mit einer Texteingabe, um den Namen der neuen App einzugeben und eine Region auszuw\u00e4hlen.\" width=\"1024\" height=\"371\"><figcaption id=\"caption-attachment-125225\" class=\"wp-caption-text\">Benenne deine App.<\/figcaption><\/figure>\n<p>So w\u00fcrde das Dashboard deiner App aussehen:<\/p>\n<figure id=\"attachment_125226\" aria-describedby=\"caption-attachment-125226\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125226 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-new-app-dashboard-1024x583.png\" alt=\"Die Homepage der neuen App mit Anweisungen f\u00fcr die erstmalige Bereitstellung.\" width=\"1024\" height=\"583\"><figcaption id=\"caption-attachment-125226\" class=\"wp-caption-text\">Das Dashboard der neuen App.<\/figcaption><\/figure>\n<p>Auf dieser Seite findest du auch eine Anleitung, wie du deine App \u00fcber das CLI auf Heroku bereitstellen kannst. Hier ist die Liste der Befehle, die du ausf\u00fchren musst, um deine App auf Heroku bereitzustellen:<\/p>\n<pre><code class=\"language-bash\">git init\nheroku git:remote -a whispering-shelf-49396 # change whispering-shelf-49396 with the name of your app. You can get it in your dashboard\ngit add index.js package-lock.json package.json # do not push the <code>.env<\/code> files since we'll provide that via the in-app secrets manager git commit -am \"Initial commit\" git push heroku main <\/code><\/pre>\n<p>Sobald die Bereitstellung erfolgreich abgeschlossen ist, kannst du die bereitgestellte App \u00fcber das Dashboard ansehen, indem du auf die Schaltfl\u00e4che <strong>App \u00f6ffnen<\/strong> klickst<\/p>\n<p>Wenn du alles richtig gemacht hast, siehst du die folgende Antwort:<\/p>\n<figure id=\"attachment_125227\" aria-describedby=\"caption-attachment-125227\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125227 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-env-apibaseurl-not-found-1024x505.png\" alt=\"Ein JSON-Objekt mit den Schl\u00fcsseln environment und apiBaseUrl und den Werten \"Not found\" wird jeweils auf einer leeren HTML-Seite ausgegeben.\" width=\"1024\" height=\"505\"><figcaption id=\"caption-attachment-125227\" class=\"wp-caption-text\">Zugriff auf deine bereitgestellte App.<\/figcaption><\/figure>\n<p>Warum passiert das, fragst du dich vielleicht? Das liegt daran, dass wir die Umgebungsvariablen unserer App noch nicht in irgendeiner Form zur Verf\u00fcgung gestellt haben. Wenn du dir die Befehle ansiehst, die du f\u00fcr die Bereitstellung der App verwendet hast, wirst du feststellen, dass wir die <code>.env<\/code> Dateien nicht in unsere Versionskontrolle \u00fcbertragen haben. Wir haben auch den Wert <code>NODE_ENV<\/code> nicht im Startskript definiert.<\/p>\n<p>Um nun Umgebungsvariablen in deine App einzubinden, musst du in deinem Heroku Dashboard zu <strong>Einstellungen<\/strong> &gt; <strong>Config Vars<\/strong> navigieren. Wenn du auf <strong>Reveal Config Vars<\/strong> klickst, siehst du einen \u00e4hnlichen Bildschirm:<\/p>\n<figure id=\"attachment_125228\" aria-describedby=\"caption-attachment-125228\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125228 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-app-config-vars-1024x593.png\" alt=\"Die Einstellungsseite der neuen App zeigt App-Informationen und eine leere Liste von Konfigurationsvariablen.\" width=\"1024\" height=\"593\"><figcaption id=\"caption-attachment-125228\" class=\"wp-caption-text\">Zugriff auf die Konfigurationsvariablen deiner App.<\/figcaption><\/figure>\n<p>Hier kannst du nun den Inhalt deiner <code>.env<\/code> Datei eingeben:<\/p>\n<figure id=\"attachment_125229\" aria-describedby=\"caption-attachment-125229\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125229 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-app-config-vars-filled-1024x593.png\" alt=\"Die Einstellungsseite der neuen App zeigt Informationen zur App und eine Liste mit Konfigurationsvariablen.\" width=\"1024\" height=\"593\"><figcaption id=\"caption-attachment-125229\" class=\"wp-caption-text\">Eingabe deiner Umgebungsvariablen in Heroku.<\/figcaption><\/figure>\n<p>Wenn du zur\u00fcckgehst und die URL deiner App aktualisierst, wirst du feststellen, dass die Werte aktualisiert worden sind:<\/p>\n<figure id=\"attachment_125230\" aria-describedby=\"caption-attachment-125230\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125230 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-env-production-apibaseurl-prod-myapi-com-1024x374.png\" alt=\"Ein JSON-Objekt mit den Schl\u00fcsseln environment und apiBaseUrl und den Werten PRODUCTION und http:\/\/prod.myApi.com\/v1 wird jeweils auf einer leeren HTML-Seite ausgegeben.\" width=\"1024\" height=\"374\"><figcaption id=\"caption-attachment-125230\" class=\"wp-caption-text\">Die auf Heroku bereitgestellte App kann jetzt auf Umgebungsvariablen zugreifen.<\/figcaption><\/figure>\n<p>So kannst du den Secrets Manager einer Bereitstellungsplattform nutzen, um deine Umgebungsvariablen zu verwalten. Dazu musst du die Umgebungsvariablen jedoch manuell \u00fcber das Dashboard der Plattform verwalten. Wie du bei Heroku sehen kannst, gibt es keine M\u00f6glichkeit, einen gro\u00dfen Dump von Umgebungsvariablen aus einer Datei zu importieren, sodass du gezwungen bist, sie einzeln einzugeben. Das kann manchmal ziemlich m\u00fchsam sein.<\/p>\n<p>Im n\u00e4chsten Abschnitt stellen wir dir eine effizientere Methode zur Verwaltung von App-Geheimnissen vor &#8211; den Secret Manager.<\/p>\n<h3>Typ 3: Verwende Doppler f\u00fcr die Verwaltung von Umgebungsvariablen<\/h3>\n<p>Die oben beschriebenen Methoden sind nicht plattform\u00fcbergreifend einheitlich. Beim Einsatz in der Produktion verl\u00e4sst man sich normalerweise nicht auf Umgebungsdateien, und bei der lokalen Arbeit ist es nicht m\u00f6glich, plattformspezifische Variablenmanager zu verwenden. Geheime Manager wie Doppler f\u00fcllen diese L\u00fccke.<\/p>\n<p>Um sie selbst auszuprobieren, musst du zun\u00e4chst ein kostenloses Konto bei <a href=\"https:\/\/dashboard.doppler.com\/login\" target=\"_blank\" rel=\"noopener noreferrer\">Doppler<\/a> erstellen.<\/p>\n<p>Danach kannst du der Anleitung folgen. Wahrscheinlich wird automatisch ein Beispielprojekt mit dem Namen example-project f\u00fcr dich erstellt. Der Einfachheit halber lassen wir es beiseite und erstellen ein neues Projekt f\u00fcr unseren Anwendungsfall.<\/p>\n<p>Gehe zum Dashboard und klicke auf das Plus-Symbol neben Projekte.<\/p>\n<figure id=\"attachment_125231\" aria-describedby=\"caption-attachment-125231\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125231 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-projects-1024x461.png\" alt=\"Der Bereich Projekte von Doppler zeigt ein Projekt mit dem Namen example-project.\" width=\"1024\" height=\"461\"><figcaption id=\"caption-attachment-125231\" class=\"wp-caption-text\">Deine Projekte in Doppler.<\/figcaption><\/figure>\n<p>Gib als Namen &#8222;my-app&#8220; ein und fahre fort. So sollte das Projekt aussehen, wenn es fertig ist:<\/p>\n<figure id=\"attachment_125232\" aria-describedby=\"caption-attachment-125232\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125232 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-project-env-1024x321.png\" alt=\"Eine Reihe von Umgebungen mit leeren Listen von Variablen auf dem Dashboard der App in Doppler.\" width=\"1024\" height=\"321\"><figcaption id=\"caption-attachment-125232\" class=\"wp-caption-text\">Die Umgebungen und Variablen deines Projekts.<\/figcaption><\/figure>\n<p>Klicke auf das Listenelement dev config. Klicke auf <strong>Add New Secret<\/strong> und f\u00fcge zwei Secrets wie folgt hinzu:<\/p>\n<figure id=\"attachment_125233\" aria-describedby=\"caption-attachment-125233\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125233 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-dev-env-vars-filled-1024x486.png\" alt=\"Eine Liste von Umgebungsvariablen unter der Dev-Umgebung auf Doppler\" width=\"1024\" height=\"486\"><figcaption id=\"caption-attachment-125233\" class=\"wp-caption-text\">F\u00fcge die dev-Variablen zu Doppler hinzu.<\/figcaption><\/figure>\n<p>Klicke auf die Schaltfl\u00e4che Speichern, um deine \u00c4nderungen zu speichern. Beachte, dass Doppler die Gro\u00df- und Kleinschreibung bei der Benennung deiner Geheimnisse nicht unterst\u00fctzt. Obwohl es im Allgemeinen vorzuziehen ist, die Namen der Geheimnisse in Gro\u00dfbuchstaben zu schreiben, hast du bei Doppler keine andere Wahl. Um die Geheimnisse, die von Doppler geholt werden, zu identifizieren, haben wir ihnen folgende Buchstaben vorangestellt <code>DP_<\/code><\/p>\n<p>Jetzt, wo die Variablen in Doppler erstellt und gespeichert sind, k\u00f6nnen wir sie in unsere Codebasis integrieren. Dazu musst du <a href=\"https:\/\/docs.doppler.com\/docs\/install-cli\" target=\"_blank\" rel=\"noopener noreferrer\">das Doppler CLI<\/a> einrichten. Hier ist ein kurzer \u00dcberblick \u00fcber das, was du tun musst.<\/p>\n<p>Zun\u00e4chst installierst du das CLI lokal, indem du den <a href=\"https:\/\/docs.doppler.com\/docs\/install-cli#installation\" target=\"_blank\" rel=\"noopener noreferrer\">Anweisungen f\u00fcr dein Betriebssystem<\/a> folgst. Als N\u00e4chstes meldest du dich mit deinem neu erstellten Konto bei der Doppler CLI an, indem du den folgenden Befehl ausf\u00fchrst:<\/p>\n<pre><code class=\"language-bash\">doppler login\n<\/code><\/pre>\n<p>Sobald du eingeloggt bist, f\u00fchre den folgenden Befehl aus, um dich mit deinem Remote-Doppler-Projekt \u00fcber dein CLI zu verbinden:<\/p>\n<pre><code class=\"language-bash\">doppler setup\n<\/code><\/pre>\n<p>Sobald du dich mit dem richtigen Projekt verbunden hast, kannst du mit folgendem Befehl auf deine Geheimnisse zugreifen:<\/p>\n<pre><code class=\"language-bash\">doppler run\n<\/code><\/pre>\n<p>Wir werden diesen Befehl jedoch nicht direkt ausf\u00fchren. Stattdessen f\u00fcgen wir ihn an eines unserer Startskripte an, damit er automatisch ausgef\u00fchrt wird, wenn die App startet. Aktualisieren wir die Datei <code>package.json<\/code> mit dem neuen Run-Skript f\u00fcr die Umgebung <code>dev<\/code>:<\/p>\n<pre><code class=\"language-json\">\/\/ \u2026\n\"scripts\": {\n   \"test\": \"echo \"Error: no test specified\" && exit 1\",\n   \"start\": \"node index.js\",\n   \"start-dev\": \"doppler run -- node index.js\", \/\/ This has to be updated\n   \"start-staging\": \"cross-env NODE_ENV=STAGING node index.js\"\n },\n\/\/ \u2026\n<\/code><\/pre>\n<p>Erinnere dich auch daran, dass wir in Doppler neue Variablennamen erstellt haben, die mit <code>DP_<\/code> beginnen. Wir m\u00fcssen also unsere <code>index.js<\/code> Datei aktualisieren, um auch diese Variable anzuzeigen:<\/p>\n<pre><code class=\"language-js\">const express = require(\"express\")\nrequire('dotenv').config({\n   path: \"STAGING\" === process.env.NODE_ENV?.toUpperCase() ? '.\/.env.staging' : '.\/.env.dev'\n})\n\nconsole.log(process.env.NODE_ENV)\n\nconst app = express()\n\napp.get(\"\/\", (req, res) =&gt; {\n  \n   \/\/ the responseMessage object extracts its values from environment variables\n   \/\/ If a value is not found, it instead stores the string \"not found\"\n   const responseMessage = {\n       environment: process.env.environment || \"Not found\",\n       apiBaseUrl: process.env.apiBaseUrl || \"Not found\",\n       DP_ENVIRONMENT: process.env.DP_ENVIRONMENT || \"Not found\" \/\/ Add the new variable here\n   }\n\n   res.send(responseMessage)\n})\n\napp.listen(process.env.PORT || 3000);\n<\/code><\/pre>\n<p>Um die Dinge in Aktion zu sehen, f\u00fchre den folgenden Befehl aus:<\/p>\n<pre><code class=\"language-bash\">npm run start-dev\n<\/code><\/pre>\n<p>So sollte http:\/\/localhost:3000 jetzt aussehen:<\/p>\n<figure id=\"attachment_125234\" aria-describedby=\"caption-attachment-125234\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125234 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-env-dev-apibaseurl-dev-myapi-com-dpenv-dev-1024x402.png\" alt=\"Ein JSON-Objekt mit den Schl\u00fcsseln environment, apiBaseUrl und DP_ENVIRONMENT und den Werten DEV, http:\/\/dev.myApi.com:8080\/v1 und DOPPLER_DEV, die jeweils auf einer leeren HTML-Seite ausgegeben werden.\" width=\"1024\" height=\"402\"><figcaption id=\"caption-attachment-125234\" class=\"wp-caption-text\">Zugriff auf Doppler-Geheimnisse in einer lokal laufenden App.<\/figcaption><\/figure>\n<p>Die dritte Variable in der Liste (<code>DP_ENVIRONMENT<\/code>) wird direkt von Doppler geholt.<\/p>\n<p>Als N\u00e4chstes kannst du Doppler mit deiner Bereitstellungsplattform verbinden, um \u00fcber deine bereitgestellte App auf diese Geheimnisse zuzugreifen. Dazu erstellen wir zun\u00e4chst eine neue Umgebung in Doppler f\u00fcr einen neuen Satz von Einsatzgeheimnissen.<\/p>\n<p>Gehe zur\u00fcck auf die Startseite deines Projekts my-app. Klicke auf das einzige Listenelement in der <strong>Staging-Liste<\/strong>:<\/p>\n<figure id=\"attachment_125235\" aria-describedby=\"caption-attachment-125235\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125235 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-projects-vars-filled-1024x381.png\" alt=\"Listen von Umgebungsvariablen unter dem my-app-Projekt mit zwei Variablen, die unter der Entwicklungsumgebung definiert sind.\" width=\"1024\" height=\"381\"><figcaption id=\"caption-attachment-125235\" class=\"wp-caption-text\">Das Dashboard deiner App.<\/figcaption><\/figure>\n<p>Du wirst feststellen, dass die beiden geheimen Variablen, die du in der <code>dev<\/code> Umgebung definiert hast, hier bereits vorhanden sind, aber es fehlen Werte:<\/p>\n<figure id=\"attachment_125236\" aria-describedby=\"caption-attachment-125236\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125236 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-stg-vars-empty-1024x559.png\" alt=\"Listen von Umgebungsvariablen unter der Staging-Umgebung mit fehlenden Werten.\" width=\"1024\" height=\"559\"><figcaption id=\"caption-attachment-125236\" class=\"wp-caption-text\">Die Umgebungsvariablen deiner App f\u00fcr die Staging-Umgebung.<\/figcaption><\/figure>\n<p>F\u00fcge die folgenden Werte hinzu und klicke auf <strong>Speichern<\/strong>:<\/p>\n<figure id=\"attachment_125237\" aria-describedby=\"caption-attachment-125237\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125237 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-stg-vars-filled-1024x397.png\" alt=\"Aufgef\u00fcllte Liste der Umgebungsvariablen in der Staging-Umgebung deiner App.\" width=\"1024\" height=\"397\"><figcaption id=\"caption-attachment-125237\" class=\"wp-caption-text\">Die Umgebungsvariablen deiner App f\u00fcr die Staging-Umgebung.<\/figcaption><\/figure>\n<p>Wenn du hier fertig bist, klickst du auf die Registerkarte <strong>Integrationen<\/strong> und <strong>Sync hinzuf\u00fcgen<\/strong> auf dieser Seite, um die Verbindung zu deiner Bereitstellungsplattform herzustellen. Du erh\u00e4ltst eine Liste der Plattformen, in die Doppler integriert werden kann:<\/p>\n<figure id=\"attachment_125238\" aria-describedby=\"caption-attachment-125238\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125238 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-integrations-set-up-1024x574.png\" alt=\"Liste der Einsatzplattformen, in die Doppler integriert werden kann.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125238\" class=\"wp-caption-text\">Verbinde deine Doppler-App mit Heroku.<\/figcaption><\/figure>\n<p>Da unsere App auf Heroku bereitgestellt wird, klicken wir auf Heroku. Befolge die Schritte auf dem Bildschirm, um deinen Heroku-Account mit Doppler zu verbinden und die erforderlichen Zugriffsrollen festzulegen. Sobald die Verbindung hergestellt ist, siehst du einen \u00e4hnlichen Bildschirm:<\/p>\n<figure id=\"attachment_125239\" aria-describedby=\"caption-attachment-125239\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125239 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-integration-1024x574.png\" alt=\"Heroku-Integrationsablauf mit einem Formular auf der rechten Seite, das nach Projekt- und Konfigurationsdetails fragt.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125239\" class=\"wp-caption-text\">Gib die Details deiner App an, um sie mit Heroku zu verbinden.<\/figcaption><\/figure>\n<p>W\u00e4hle als <strong>Projekttyp<\/strong> <strong>App<\/strong>, w\u00e4hle deine Heroku-App in der Liste der verf\u00fcgbaren Apps, w\u00e4hle stg als <strong>zu synchronisierende Config<\/strong> und <strong>Nicht importieren<\/strong> in den <strong>Importoptionen<\/strong>, da wir keine Geheimnisse von Heroku zu Doppler importieren wollen.<\/p>\n<p>Klicke auf <strong>Integration einrichten<\/strong>, wenn du fertig bist. Wenn die Integration erfolgreich durchgef\u00fchrt wurde, siehst du einen \u00e4hnlichen Bildschirm:<\/p>\n<figure id=\"attachment_125240\" aria-describedby=\"caption-attachment-125240\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125240 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/doppler-integration-heroku-1024x574.png\" alt=\"Liste der integrierten Apps in Heroku, mit dem Verbindungsnamen, der Umgebung, der Ziel-URL und dem Status.\" width=\"1024\" height=\"574\"><figcaption id=\"caption-attachment-125240\" class=\"wp-caption-text\">Die Integrationen deiner Doppler-App mit Heroku.<\/figcaption><\/figure>\n<p>Wenn du jetzt den Abschnitt <strong>Config Vars<\/strong> im Dashboard deiner Heroku-App anschaust, wirst du feststellen, dass die Variablen von Doppler automatisch zu den Config Vars deines Heroku-Deployments hinzugef\u00fcgt worden sind:<\/p>\n<figure id=\"attachment_125241\" aria-describedby=\"caption-attachment-125241\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125241 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-dopper-config-vars-1024x334.png\" alt=\"Aufgef\u00fcllte Liste der Umgebungsvariablen im Abschnitt Config Vars deiner Heroku-App.\" width=\"1024\" height=\"334\"><figcaption id=\"caption-attachment-125241\" class=\"wp-caption-text\">Die Geheimnisse von Doppler werden jetzt mit Heroku synchronisiert.<\/figcaption><\/figure>\n<p>Du wirst auch feststellen, dass die beiden urspr\u00fcnglichen Umgebungsvariablen (<code>environment<\/code> und <code>apiBaseUrl<\/code>) entfernt wurden. Das liegt daran, dass wir unter <strong>Importoptionen<\/strong> die Option <strong>Nicht importieren<\/strong> gew\u00e4hlt haben. Du kannst sie bei Bedarf in Heroku wieder hinzuf\u00fcgen.<\/p>\n<p>Das Vorhandensein der neuen Umgebungsvariablen im Abschnitt <strong>Config Vars<\/strong> von Heroku zeigt, dass du Doppler erfolgreich so eingerichtet hast, dass er Geheimnisse sowohl lokal in deiner Entwicklungsumgebung als auch in deiner Bereitstellungsumgebung verwaltet, und du kannst den aktualisierten Code in Heroku bereitstellen, um die \u00c4nderungen in der bereitgestellten App zu sehen. So sieht es aus, wenn du fertig bist:<\/p>\n<figure id=\"attachment_125242\" aria-describedby=\"caption-attachment-125242\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-125242 size-large\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/06\/heroku-doppler-env-staging-apibaseurl-staging-myapi-com-dpenv-staging-1024x383.png\" alt=\"Ein JSON-Objekt mit den Schl\u00fcsseln environment, apiBaseUrl und DP_ENVIRONMENT und den Werten STAGING, http:\/\/staging.myApi.com:3000\/v1 und DOPPLER_STAGING, die jeweils auf einer leeren HTML-Seite ausgegeben werden.\" width=\"1024\" height=\"383\"><figcaption id=\"caption-attachment-125242\" class=\"wp-caption-text\">Zugriff auf Doppler-Geheimnisse in einer auf Heroku bereitgestellten App.<\/figcaption><\/figure>\n<p>Damit ist die Anleitung zum Einrichten von Umgebungsvariablen in einem Node.js-Projekt mit drei g\u00e4ngigen Methoden abgeschlossen. Als N\u00e4chstes sehen wir uns an, wie du sicherstellen kannst, dass deine Umgebungsvariablen und ihre Dateien sicher sind, w\u00e4hrend sie verwendet werden.<\/p>\n<h2>Wie du Umgebungsvariablendateien sicher h\u00e4ltst<\/h2>\n<p>Auch wenn Umgebungsvariablen in der modernen DevOps-Praxis eine n\u00fctzliche Ressource sind, musst du dir \u00fcber die Auswirkungen auf die Sicherheit im Klaren sein, die sie verursachen k\u00f6nnen. Hier sind einige Tipps, wie du deine Umgebungsvariablendateien sicher und vor neugierigen Blicken gesch\u00fctzt h\u00e4ltst.<\/p>\n<h3>Halte env-Dateien aus der Versionskontrolle heraus<\/h3>\n<p>Eines der wichtigsten Dinge, die du beim Umgang mit Geheimnissen beachten solltest, ist, sie aus der Versionskontrolle herauszuhalten. Die Versionskontrolle ist ausschlie\u00dflich dazu da, \u00c4nderungen am Quellcode deiner Anwendung zu verfolgen. Alles, was in ein Versionskontrollsystem eingegeben wird, bleibt dort, bis es explizit gel\u00f6scht wird, und die meisten Mitglieder deines Teams haben zu Referenzzwecken Zugriff auf diese historischen Daten.<\/p>\n<p>Wenn du die Schl\u00fcssel zu deinem AWS-Storage-Bucket oder einem kostenpflichtigen API-Service in einer env-Datei f\u00fcr deine Anwendung gespeichert hast, solltest du sie nicht mit deinem gesamten Entwicklungsteam teilen, es sei denn, sie m\u00fcssen darauf zugreifen k\u00f6nnen. Wenn dein Projekt auf einer <a href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-github\/\">Plattform wie GitHub<\/a> als Open Source zur Verf\u00fcgung steht, k\u00f6nnte das Hinzuf\u00fcgen von env-Dateien zu deinem VCS bedeuten, dass du es mit der ganzen Welt teilst! Env-Dateien sind daf\u00fcr gedacht, lokal gespeichert zu werden. Du kannst jede Bereitstellungsumgebung \u00fcber spezielle Methoden mit den relevanten env-Dateien versorgen.<\/p>\n<p>F\u00fcge die env-Datei immer zu deiner <strong>.gitignore-Datei<\/strong> hinzu (vorausgesetzt, du verwendest git zur Versionskontrolle) oder verwende eine andere Methode, damit dein VCS die env-Dateien beim \u00dcbertragen von \u00c4nderungen \u00fcberspringt. Du kannst in Erw\u00e4gung ziehen, deinem VCS eine Vorlage f\u00fcr die env-Datei hinzuzuf\u00fcgen, damit alle anderen Teammitglieder diese als Referenz f\u00fcr die Erstellung ihrer lokalen env-Dateien verwenden k\u00f6nnen.<\/p>\n<h3>\u00dcberpr\u00fcfe den Paketnamen vor der Installation<\/h3>\n<p>Da du normalerweise die meisten Pakete von NPM installierst, wenn du mit einer Node.js-Anwendung arbeitest, solltest du dabei besonders vorsichtig sein. Es ist allgemein bekannt, dass jeder ein NPM-Paket erstellen und verteilen kann. Daher ist es auch nicht verwunderlich, dass die Leute oft Fehler machen, wenn sie den Namen eines Pakets, das sie installieren wollen, eintippen.<\/p>\n<p>Es wurden <a href=\"https:\/\/therecord.media\/another-set-of-malicious-npm-packages-caught-stealing-discord-tokens-environment-variables\/\" target=\"_blank\" rel=\"noopener noreferrer\">mehrere F\u00e4lle<\/a> bekannt, in denen b\u00f6sartige Pakete mit \u00e4hnlichen Namen wie beliebte Pakete aufgrund von Tippfehlern versehentlich von Benutzern installiert wurden. Solche Pakete sind darauf ausgelegt, auf die Umgebungsvariablen deiner App zuzugreifen und sie \u00fcber das Internet an ihre Sch\u00f6pfer zu senden.<\/p>\n<p>Die einzige M\u00f6glichkeit, dich zu sch\u00fctzen, ist, wachsam zu sein, wenn du neue Pakete aus dem Internet installierst.<\/p>\n<h3>Bevorzuge geheime Manager gegen\u00fcber env-Dateien<\/h3>\n<p>Aufgrund von Problemen wie versehentlicher Weitergabe und Formatierungsfehlern sind Umgebungsdateien sicherlich nicht die beste Option f\u00fcr die Verwaltung von Geheimnissen. Hier kommen die Secret Manager ins Spiel. Mit Secret Managern wie Doppler kannst du die Geheimnisse deiner App vollst\u00e4ndig von deinem Quellcode trennen und sie auf einer eigenen Plattform verwalten.<\/p>\n<p>Du kannst deinem Team direkt auf der Plattform Zugriff auf diese Geheimnisse gew\u00e4hren, und deine App kann \u00fcber verschl\u00fcsselte Verbindungen \u00fcber das Internet darauf zugreifen. Es l\u00f6st alle Probleme, die mit Umgebungsdateien verbunden sind, und gibt dir gleichzeitig die Flexibilit\u00e4t, verschiedene Geheimnisse f\u00fcr die Umgebungen deiner Anwendung zu verwalten.<\/p>\n<p>Allerdings gibt es auch hier Vorbehalte. Secret Manager befinden sich in einem sehr fr\u00fchen Stadium ihrer technologischen Entwicklung. Au\u00dferdem handelt es sich bei Geheimhaltungsmanagern um Plattformen von Drittanbietern, die ihren eigenen Sicherheitsproblemen unterliegen. Deshalb ist eine sorgf\u00e4ltige Bewertung und Auswahl des richtigen Secret Managers wichtig. Wenn deine Anwendung, dein Entwicklungsteam oder die Anzahl der Geheimnisse deiner Anwendung nicht gro\u00df genug ist, k\u00f6nnten Geheimdienstmanager zu viel f\u00fcr dich sein.<\/p>\n<h2>Referenztabelle f\u00fcr Umgebungsvariablen<\/h2>\n<p>Hier ist ein kurzer Spickzettel, der dir hilft, dich schnell mit den Umgebungsvariablen und ihrer Verwendung vertraut zu machen:<\/p>\n<div class=\"\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td>Definition von Umgebungsvariablen<\/td>\n<td>Variablen, die den Prozessen von ihren aufrufenden Prozessen zur Verf\u00fcgung gestellt werden<\/td>\n<\/tr>\n<tr>\n<td>Zweck<\/td>\n<td>\n<ul>\n<li>Speichern und Sichern von App-Geheimnissen<\/li>\n<li>Verwalten von umgebungsspezifischen Konfigurationsdaten<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Typen<\/td>\n<td>Nur f\u00fcr Windows:<\/p>\n<ul>\n<li>System<\/li>\n<li>Benutzer<\/li>\n<li>Laufzeit\/Prozess<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Beliebte Anwendungsbeispiele<\/td>\n<td>\n<ul>\n<li>Private Schl\u00fcssel<\/li>\n<li>Namen der Umgebung<\/li>\n<li>API-Basis-URLs, etc<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>Wie implementierst du diese in deine Anwendung?<\/td>\n<td>\n<ul>\n<li>.env-Dateien<\/li>\n<li>Plattformspezifische Geheimnismanager<\/li>\n<li>Dedizierter Dienst zur Verwaltung von Geheimnissen<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h2>Zusammenfassung<\/h2>\n<p>Umgebungsvariablen sind wichtig, um sensible Daten von deiner Anwendung zu isolieren. Sie helfen dabei, die Geheimnisse deiner Anwendung zu sch\u00fctzen und erm\u00f6glichen es dir, je nach Umgebung der Anwendung einfach zwischen verschiedenen Sets von Geheimnissen zu wechseln. Die Verwaltung dieser Variablen ist jedoch eine weitere Aufgabe f\u00fcr dich.<\/p>\n<p>Wie oben beschrieben, gibt es mehrere M\u00f6glichkeiten, Umgebungsvariablen zu sichern. Probiere sie alle aus und finde heraus, welche am besten zu deinem Projekt passt und es beschleunigt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn du schon einmal an der Entwicklung einer Anwendung gearbeitet hast, hast du sicher schon von dem Begriff &#8222;Umgebungsvariablen&#8220; geh\u00f6rt Umgebungsvariablen werden verwendet, um Anwendungsgeheimnisse und &#8230;<\/p>\n","protected":false},"author":238,"featured_media":52296,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[420,465,466],"topic":[983],"class_list":["post-52295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-development","tag-javascript","tag-node-js","topic-technische-tipps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Umgebungsvariablen: Was sie sind und wie man sie benutzt<\/title>\n<meta name=\"description\" content=\"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Umgebungsvariablen: Was sie sind und wie man sie benutzt\" \/>\n<meta property=\"og:description\" content=\"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-11T07:00:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:18:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kumar Harsh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kumar Harsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"36\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\"},\"author\":{\"name\":\"Kumar Harsh\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\"},\"headline\":\"Umgebungsvariablen: Was sie sind und wie man sie benutzt\",\"datePublished\":\"2022-07-11T07:00:40+00:00\",\"dateModified\":\"2025-10-01T19:18:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\"},\"wordCount\":6723,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg\",\"keywords\":[\"development\",\"JavaScript\",\"node.js\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\",\"url\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\",\"name\":\"Umgebungsvariablen: Was sie sind und wie man sie benutzt\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg\",\"datePublished\":\"2022-07-11T07:00:40+00:00\",\"dateModified\":\"2025-10-01T19:18:21+00:00\",\"description\":\"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg\",\"width\":1460,\"height\":730,\"caption\":\"Umgebungsvariablen: Was sie sind und wie man sie benutzt\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Technische Tipps\",\"item\":\"https:\/\/kinqsta.com\/de\/thema\/technische-tipps\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Umgebungsvariablen: Was sie sind und wie man sie benutzt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/de\/#website\",\"url\":\"https:\/\/kinqsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\",\"name\":\"Kumar Harsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"caption\":\"Kumar Harsh\"},\"description\":\"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.\",\"sameAs\":[\"https:\/\/kumarharsh.me\"],\"url\":\"https:\/\/kinqsta.com\/de\/blog\/author\/kumarharsh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Umgebungsvariablen: Was sie sind und wie man sie benutzt","description":"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/","og_locale":"de_DE","og_type":"article","og_title":"Umgebungsvariablen: Was sie sind und wie man sie benutzt","og_description":"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.","og_url":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2022-07-11T07:00:40+00:00","article_modified_time":"2025-10-01T19:18:21+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg","type":"image\/jpeg"}],"author":"Kumar Harsh","twitter_card":"summary_large_image","twitter_description":"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.","twitter_image":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Kumar Harsh","Gesch\u00e4tzte Lesezeit":"36\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/"},"author":{"name":"Kumar Harsh","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9"},"headline":"Umgebungsvariablen: Was sie sind und wie man sie benutzt","datePublished":"2022-07-11T07:00:40+00:00","dateModified":"2025-10-01T19:18:21+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/"},"wordCount":6723,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg","keywords":["development","JavaScript","node.js"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/","url":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/","name":"Umgebungsvariablen: Was sie sind und wie man sie benutzt","isPartOf":{"@id":"https:\/\/kinqsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg","datePublished":"2022-07-11T07:00:40+00:00","dateModified":"2025-10-01T19:18:21+00:00","description":"Umgebungsvariablen werden verwendet, um App-Secrets und Konfigurationsdaten zu speichern, die von deiner laufenden App bei Bedarf abgerufen werden. Mehr dazu erf\u00e4hrst du in diesem Artikel.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#primaryimage","url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg","contentUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/07\/what-is-an-environment-variable.jpg","width":1460,"height":730,"caption":"Umgebungsvariablen: Was sie sind und wie man sie benutzt"},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/de\/blog\/was-ist-eine-umgebungsvariable\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Technische Tipps","item":"https:\/\/kinqsta.com\/de\/thema\/technische-tipps\/"},{"@type":"ListItem","position":3,"name":"Umgebungsvariablen: Was sie sind und wie man sie benutzt"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/de\/#website","url":"https:\/\/kinqsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinqsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9","name":"Kumar Harsh","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","caption":"Kumar Harsh"},"description":"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.","sameAs":["https:\/\/kumarharsh.me"],"url":"https:\/\/kinqsta.com\/de\/blog\/author\/kumarharsh\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/52295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/comments?post=52295"}],"version-history":[{"count":6,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/52295\/revisions"}],"predecessor-version":[{"id":52976,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/52295\/revisions\/52976"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/translations\/de"},{"href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/52295\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/media\/52296"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/media?parent=52295"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/tags?post=52295"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/topic?post=52295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}