‫Kursleiter: Willkommen zurück.
‫In diesem Video erfahren Sie
‫alles über Umgebungsvariablen.
‫Also, was sie sind, wie wir sie einstellen und wie wir sie verwenden.
‫Hier geht es nicht gerade um Express, es hat
‫wirklich mit der Node-JS-Entwicklung im Allgemeinen zu tun, aber wir brauchen
‫dies wirklich, um im Projekt voranzukommen,
‫und daher ist dies ein guter Zeitpunkt, um
‫darüber zu sprechen.
‫Node JS oder Express-Apps können also in
‫verschiedenen Umgebungen ausgeführt werden.
‫Und die wichtigsten sind die Entwicklungsumgebung
‫und die Produktionsumgebung.
‫Das liegt daran, dass wir je nach
‫Umgebung zum Beispiel unterschiedliche Datenbanken verwenden oder
‫die Anmeldung ein- oder ausschalten oder das
‫Debuggen ein- oder ausschalten oder
‫wirklich alle Arten von verschiedenen Einstellungen, die
‫sich je nach Entwicklung ändern können. wieder rein.
‫Die wichtigsten sind also wiederum die Entwicklungs-
‫und die Produktionsumgebung.
‫Aber es gibt andere
‫Umgebungen, die größere Teams verwenden könnten.
‫Diese Art von Einstellung, die
‫ich gerade erwähnt habe, wie verschiedene Datenbanken oder
‫ein- oder ausgeschaltete Anmeldung, basiert also auf Umgebungsvariablen.
‫Express stellt die Umgebung jetzt standardmäßig auf Entwicklung ein, was sehr
‫sinnvoll ist, da wir dies tun, wenn wir ein
‫neues Projekt starten.
‫Schauen wir uns also nur
‫zur Demonstration diese Variable an, und
‫wir werden dies hier auf dem Server tun.
‫Denken Sie also daran, dass wir alles, was nicht
‫mit Express zusammenhängt, außerhalb der App tun werden. JS-Datei.
‫Daher verwenden wir diesen hier nur zum Konfigurieren unserer Anwendung.
‫Wir verwenden diese also nur, um alles
‫zu konfigurieren, was mit der Express-Anwendung zu tun hat.
‫Aber die Umgebungsvariablen liegen wirklich außerhalb
‫des Geltungsbereichs von Express.
‫Also lass uns schnell eine Konsole machen. loggen Sie sich
‫hier von der App ein. bekommen
‫und dann beenden.
‫Sparen Sie hier und hier unten können Sie die Entwicklung sehen.
‫Lassen Sie mich die Konsole hier löschen, sie erneut speichern,
‫und hier sehen Sie wieder die Entwicklung.
‫Das ist also die Umgebung, in der wir uns derzeit befinden.
‫Und so sehen Sie, dass diese App. getenv liefert
‫uns die Umgebungsvariable env.
‫Zusammenfassend sind Umgebungsvariablen globale Variablen, die verwendet werden, um die
‫Umgebung zu definieren, in der eine
‫Knoten-App ausgeführt wird.
‫Dieser wird also von Express
‫festgelegt, aber Knoten JS selbst legt tatsächlich viele Umgebungen fest.
‫Nun wird diese env-Variable hier tatsächlich von Express
‫gesetzt, aber Knoten JS selbst setzt
‫tatsächlich auch viele Umgebungsvariablen.
‫Werfen wir also auch einen Blick auf diese.
‫Diese befinden sich also im Prozess. env.
‫Speichern Sie es und
‫hier haben wir eine Reihe verschiedener Variablen, okay, und ich
‫werde sie nicht alle durchgehen, aber sehen wir einfach, dass es sich wirklich um eine
‫Reihe von ihnen handelt, und Node verwendet die meisten von
‫ihnen intern.
‫Zum Beispiel eine Aufgabe zum
‫aktuellen Arbeitsverzeichnis hier in dieser Umgebungsvariable und
‫wirklich eine Menge anderer Dinge, wie Sie sehen können.
‫Zum Beispiel mein Home-Ordner
‫oder mein Login-Name sehen Sie das Skript, das wir verwenden, um diesen Prozess
‫zu starten, also wirklich eine Menge Zeug, das Node JS
‫intern aus irgendeinem Grund benötigt.
‫Jetzt kommen diese Variablen aus dem Prozesskernmodul
‫und wir sind in dem Moment eingestellt, in dem der Prozess gestartet wurde.
‫Und wie Sie sehen, brauchten wir das Prozessmodul
‫nicht richtig.
‫Es ist einfach überall automatisch verfügbar.
‫Jetzt hängen in Express viele Pakete
‫von einer speziellen Variablen namens Knoten N ab.
‫Es ist also eine
‫Variable, die eine Art Konvention ist, die definieren sollte,
‫ob wir uns im Entwicklungs- oder im Produktionsmodus befinden.
‫Express definiert diese Variable jedoch nicht
‫wirklich, und daher müssen wir dies manuell tun.
‫Und es gibt mehrere Möglichkeiten, dies zu
‫tun, aber beginnen wir mit der einfachsten
‫Methode, das Terminal zu verwenden.
‫Also werde ich diesen
‫Prozess hier beenden, löschen, und als wir diesen Prozess das letzte Mal
‫gestartet haben, haben wir ihn mit npm start gemacht.
‫Und npm start wiederum steht für wo ist es?
‫Es steht also für Nodemon-Server.
‫Und so kopieren wir das hier tatsächlich.
‫Also verwenden wir den Nodemon-Server. js, um den Vorgang zu starten.
‫Wenn Sie jedoch eine
‫Umgebungsvariable für diesen Prozess festlegen möchten, müssen wir
‫diese Variable für diesen Befehl im Voraus planen.
‫Wir sagen
‫also Nodeenv, das ist die spezielle
‫Variable, über die ich gerade gesprochen habe, ist
‫gleich Entwicklung.
‫Und wenn ich diesen Prozess jetzt starte, schauen wir uns das an.
‫Und so haben wir jetzt hier den Knoten N auf Entwicklung gesetzt.
‫Und das ist das Ergebnis dieser Konsole. Abmeldevorgang.
‫env.
‫Die Variable,
‫die wir hier haben, stammt also tatsächlich von diesem Befehl.
‫Und wir können sogar noch mehr definieren, wenn wir wollten.
‫Sagen wir einfach, dass X 23
‫ist, nur zu Testzwecken, starten Sie den Prozess und jetzt
‫sehen Sie, dass die X-Umgebungsvariable an diese 23-Zeichenfolge angehängt ist.
‫Auch hier hängen viele Pakete auf
‫npm, die wir für die
‫Express-Entwicklung verwenden, tatsächlich von dieser Umgebungsvariablen ab.
‫Wenn unser Projekt fertig ist
‫und wir es bereitstellen, sollten wir den Knoten N und die Variable auf Produktion ändern.
‫Und das werden wir natürlich tun, wenn wir das
‫Projekt bis zum Ende des Kurses bereitstellen.
‫Also setzen wir Knoten
‫N und X als Umgebungsvariablen, aber wir können noch viel mehr tun.
‫Und das liegt daran, dass
‫wir normalerweise Umgebungsvariablen wie Konfigurationseinstellungen für unsere Anwendungen verwenden.
‫Wenn unsere App also eine Konfiguration für Dinge benötigt,
‫die sich je nach Umgebung, in der die App ausgeführt wird,
‫ändern können, verwenden wir Umgebungsvariablen.
‫Zum Beispiel könnten wir verschiedene Datenbanken für die Entwicklung
‫und zum Testen verwenden, bis wir für jede
‫eine Variable definieren und dann die
‫richtige Datenbank entsprechend der Umgebung aktivieren können.
‫Wir könnten auch sensible
‫Daten wie Passwörter und Benutzernamen mithilfe von Umgebungsvariablen festlegen.
‫Jetzt ist es nicht wirklich praktisch, alle
‫diese Variablen immer in dem Befehl zu definieren,
‫in dem wir die Anwendung starten.
‫Stellen Sie sich
‫also vor, wir hätten 10 Umgebungsvariablen und es wäre nicht wirklich
‫praktisch, sie alle hier in diesem Befehl ausschreiben zu müssen.
‫Stattdessen erstellen wir eine Konfigurationsdatei.
‫Lassen Sie mich also weitermachen und
‫die Konfiguration erstellen. env.
‫Und so ist env
‫wirklich die Konvention zum Definieren einer Datei, die aus diesen Umgebungsvariablen besteht.
‫Und VS-Code erkennt das tatsächlich
‫und fügt dieses Konfigurationssymbol direkt in die Datei ein.
‫Lassen Sie uns nun diese Variable hier
‫definieren und hier einfügen.
‫Und wir
‫können auch einige dieser sensiblen Daten verwenden, die ich gerade erwähnt habe.
‫Nehmen wir also
‫an, der Benutzer ist Jonas in Kleinbuchstaben und das Passwort ist eins, zwei, drei, vier, fünf, sechs.
‫Wie Sie sehen, werden diese Variablennamen normalerweise
‫immer in Großbuchstaben geschrieben.
‫Das ist also eine Art Konvention, die wir verwenden.
‫Jetzt ist in Ihrem VS-Code
‫wahrscheinlich der gesamte Text nur weiß, sodass Sie keine Syntaxhervorhebung haben.
‫Und das habe ich, weil sie das benutzen. env-Erweiterung hier.
‫Wenn Sie also Ihre . env-Dateien so aussehen, dass sie so aussehen, fahren
‫Sie fort und installieren Sie diese.
‫Wir haben also ein Benutzerkennwort und
‫definieren auch den Port, auf dem unsere App ausgeführt werden soll.
‫Das ist also
‫auch eine Art Standardvariable, die normalerweise in einer . env-Datei wie folgt.
‫Und setzen wir diesen auf 8.000.
‫Wie verbinden wir das nun eigentlich. env-Datei mit unserer
‫Knotenanwendung?
‫Wir brauchen also
‫eine Möglichkeit, diese Variablen aus dieser Datei zu lesen
‫und sie dann als Umgebungsvariablen zu speichern.
‫Denn im Moment ist dies nur eine
‫Textdatei und der Knoten JS hat keine Möglichkeit zu wissen, dass diese Variablen hier drin sind.
‫Dafür verwendet der Standard ein
‫npm-Paket namens . env.
‫Also npm installieren. env, in
‫Ordnung,
‫dann gehen wir
‫zu unserem Server und benötigen dieses Modul tatsächlich.
‫Also konst. env ist gleich
‫request. env, so einfach.
‫Und hier unten
‫können wir einfach diese dotenv-Variable
‫namens config darauf verwenden und dann müssen wir dort nur ein Objekt übergeben,
‫um den Pfad anzugeben, in dem sich unsere Konfigurationsdatei befindet.
‫Also Pfad, config
‫dotenv.
‫Dieser Befehl
‫liest nun
‫unsere Variablen aus der Datei und speichert sie in Knoten-JS-Umgebungsvariablen.
‫Lassen Sie uns jetzt npm start
‫ausführen und das sollte dann
‫alle unsere Umgebungsvariablen aufgrund dieser Codezeile für die Konsole blockieren.
‫Warten wir also ab, und tatsächlich haben
‫wir hier nodeenv, wir
‫haben den Port, die Passwörter und natürlich sollten die restlichen Daten irgendwo
‫hier in dieser gigantischen Liste sein.
‫Es spielt keine Rolle, wo es hier ist.
‫Der Benutzer war also eigentlich Jonas. io schon und so
‫sollten wir das hier Benutzername nennen.
‫Dann speichern Sie dies
‫hier erneut, um den Server erneut auszuführen, und jetzt haben wir
‫hier unten einen Benutzernamen und das sind die vier Umgebungsvariablen,
‫die in unserer Datei definiert sind.
‫Großartig, und zum Abschluss lassen Sie uns nun tatsächlich diese Variable
‫nodeenv und auch die Variable port verwenden.
‫Und dazu gehen wir in die App. js und irgendwo hier sollte der Port definiert
‫werden und irgendwo hier haben wir Oral Logger Middleware und was ich
‫jetzt tun möchte ist, diese
‫Middleware nur auszuführen, also nur zu definieren, wenn
‫wir uns tatsächlich in der Entwicklung
‫befinden, damit die Anmeldung nicht stattfindet, wenn die
‫App ist in Produktion.
‫Das haben wir also hier, und so lassen Sie
‫uns fortfahren und sagen,
‫ob es sich um einen Prozess handelt. env. nodeenv ist gleich gut
‫zu entwickeln, nur dann Morgan verwenden.
‫Jetzt
‫fragen Sie sich vielleicht, warum wir hier eigentlich Zugriff auf
‫diese Umgebungsvariable haben, wenn wir sie nicht wirklich in dieser Datei, sondern im Server definiert haben. js.
‫Und die Antwort darauf ist, dass das Lesen
‫der Variablen aus der Datei, das hier an den Knotenprozess
‫erfolgt, nur einmal erfolgen muss.
‫Es ist dann im Prozess und der Prozess ist
‫natürlich der gleiche, egal in welcher Datei wir uns befinden.
‫Wir befinden uns also
‫immer im gleichen Prozess und die Umgebungsvariablen sind im Prozess.
‫Und so ist der Prozess, der abläuft, also
‫wo unsere Anwendung läuft, immer derselbe
‫und so steht uns dieser in jeder einzelnen Datei
‫im Projekt zur Verfügung.
‫So verwenden wir diese Variable, gehen wir nun zurück
‫zum Server und sagen wir, dass der Port entweder
‫der von den
‫Umgebungsvariablen kommende oder dieser 3.000 sein sollte.
‫Also verarbeiten. env. Hafen oder 3.000.
‫Jetzt stimmt hier etwas nicht, lassen Sie uns einen Blick darauf werfen,
‫und oh, ich sehe, ich verwende bereits 8.000 in
‫einigen anderen Anwendungen, die irgendwo auf
‫meinem Computer laufen.
‫Lassen Sie mich das auch
‫hier auf 3.000 ändern.
‫Aber es spielt keine Rolle, Sie können Ihren bei 8.000 belassen,
‫wenn das für Sie funktioniert.
‫Löschen Sie es hier, speichern Sie es erneut und jetzt funktioniert es.
‫Sie können diese Konsole auch loswerden. log hier ein, weil
‫wir diese Variablen nicht ständig sehen müssen.
‫Und lassen Sie uns jetzt schnell eine
‫http-Anfrage machen, um zu sehen, ob unser Logger noch funktioniert, und ich
‫werde das hier wieder tun,
‫Postbote, also dieser, zurück, und jetzt ist unser Login weg.
‫Mal sehen warum.
‫Wir haben es also hier in der Entwicklung, was richtig ist.
‫Und damit sollte das eigentlich funktionieren, also
‫stimmt das auch hier richtig, Entwicklung.
‫Nun, lass uns eine Konsole machen. loggen Sie
‫sich ein und werfen Sie einen Blick auf eine
‫Stufe, aber wir werden hier unten undefiniert.
‫Lassen Sie uns also überprüfen, was hier vor sich geht, und
‫ich sehe das Problem,
‫dass wir
‫tatsächlich die App-Datei benötigen, bevor unsere Umgebungsvariablen aus der Konfigurationsdatei gelesen werden.
‫Und so muss es umgekehrt sein.
‫Lassen Sie mich das hier nach oben verschieben
‫und erst danach wollen wir den Code ausführen, der
‫sich in der up-Datei befindet.
‫Und erst danach wollen wir den Code ausführen,
‫der sich in der up-Datei befindet.
‫Also konnten wir die Prozessvariable in der App
‫wieder nicht lesen. js, weil es noch nicht konfiguriert war.
‫Wenn wir also jetzt sparen, dann sehen Sie
‫hier tatsächlich die Entwicklung.
‫Und wenn wir jetzt unsere Anfrage machen, schicken wir sie ab,
‫dann bekommen wir natürlich unseren Logger zurück.
‫Also das funktioniert jetzt.
‫Und nun endlich als
‫letzten Test fügen wir unserem Paket ein neues Startskript hinzu. json.
‫Im Moment haben wir den Nodemon-Server gestartet, aber ich möchte
‫auch einen weiteren für die Produktion hinzufügen,
‫damit wir testen können, was in dieser Situation passiert.
‫Starten Sie also prod, und
‫lassen Sie mich den anderen dev nennen, und so wollen wir
‫in der Produktion einfach die Variable nodeenv auf Produktion setzen.
‫Nodenv ist also gleich
‫Produktion und der Rest ist gleich.
‫Also
‫Knotenv, Server. js.
‫Also lass uns
‫das hier beenden npm run start
‫production.
‫Und jetzt
‫sehen Sie, dass unsere Variable nodeenv tatsächlich auf Produktion gesetzt ist.
‫Das kommt also von dieser Konsole. hier einloggen.
‫Und wenn wir
‫jetzt diese Anfrage machen, bekommen wir unseren Logger dann nicht.
‫Es ist also nicht mehr so wie früher.
‫Im Grunde führen wir also unterschiedlichen Code aus,
‫je nachdem, ob wir uns in der Entwicklung oder in der Produktion befinden.
‫Also lasst uns dieses hier loswerden,
‫wir können dieses
‫auch schließen, und also lasst uns natürlich
‫zu unserem Entwicklungsskript zurückkehren, also npm run start
‫dev und hier sind wir gut.
‫Nur noch ein
‫letzter Test und tatsächlich ist hier unser Login-Ergebnis.
‫Das war's für Umgebungsvariablen. Kommen wir zur letzten
‫Vorlesung in diesem Abschnitt.