Festlegen von Umgebungsvariablen für die Knoten abrufen
Ich versuche zu Folgen, ein tutorial und es sagt:
"Es gibt ein paar Möglichkeiten zum laden von Anmeldeinformationen.
- Geladen von Umgebungsvariablen,
- Geladen aus einer JSON-Datei auf der Festplatte,
Die Tasten wie folgt:
USER_ID, USER_KEY
...Dies bedeutet, dass, wenn Sie richtig legen Sie die Umgebungsvariablen, die Sie nicht brauchen, um zu verwalten Anmeldeinformationen in Ihrer Anwendung überhaupt."
Basierend auf einigen Googeln, es scheint, dass ich brauche, um die Variablen in process.env
? Wie und wo setze ich diese Zugangsdaten? Beispiel Bitte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Environment-Variablen (in diesem Fall) verwendet werden, für die übergabe von Anmeldeinformationen auf Ihre Bewerbung.
USER_ID
undUSER_KEY
können sowohl aus zugegriffen werdenprocess.env.USER_ID
undprocess.env.USER_KEY
beziehungsweise. Sie brauchen nicht, um Sie zu Bearbeiten, nur auf Ihren Inhalt zugreifen.Sieht es aus wie Sie sind einfach geben Ihnen die Wahl zwischen dem laden Ihre
USER_ID
undUSER_KEY
entwederprocess.env
oder einige specificed Datei auf der Festplatte.Nun, die Magie passiert, wenn Sie die Anwendung ausführen.
USER_ID=239482 USER_KEY=foobar node app.js
Wird, übergeben Sie die Benutzer-id
239482
und die Benutzer-Taste sofoobar
. Dies ist für den Test geeignet, jedoch für die Produktion, Sie werden wahrscheinlich werden Sie einige bash-Skripte zum export-Variablen.fish
stattbash
verwenden, benötigen Sie:env USER_ID=239482 my_command
. Zum Beispiel für die Einstellung der Umgebungsvariablen für node.js'debug
Bibliothek:env DEBUG='*' node some_file.js
fishshell.com/docs/current/faq.html#faq-single-envenv DEBUG=* node some_file.js
dotenv
ist, wie es zu Lesen.env
- Datei, und wenden Sie es.Empfehle ich den Blick in die dotenv Paket.
https://github.com/motdotla/dotenv
Es ist eine Art ähnlich der Bibliothek vorgeschlagen, innerhalb der die Antwort von @Benxamin, aber es ist viel sauberer und man braucht keine bash-Skripte. Erwähnenswert ist auch, dass die code-Basis ist sehr beliebt und gut gepflegt.
Grundsätzlich benötigen Sie einen .env-Datei (die ich sehr empfehlen kann ignoriert werden von Ihrem git/mercurial/usw.):
Dann in Ihrer Anwendung im Menü Datei die folgende Zeile ist in so früh wie möglich:
Boom. Gemacht. " - Prozess.env' wird jetzt die Variablen enthalten über:
Den '.env' - Datei ist nicht erforderlich, so brauchen Sie nicht zu kümmern, Ihre app Umfallen in seiner Abwesenheit.
Nur den env-Werten auf der Kommandozeile
Sie können die Umgebungsvariable durch eine process Globale variable wie folgt:
Funktioniert auf allen Plattformen.
NODE_ENV
bevor ichrequire("config")
mit dem gleichen Paket, alle im Rahmen einescommander
CLI-app.. 🙂 Jetzt habe ich den Verweis auf den Inhalt des namens config-Dateien mit einem einfachen CLI-argument. Einfach und effektiv.echo $NODE_ENV
ist nur, gibt Sie undefined zurück.Wenn Sie möchten, eine management-option, versuchen Sie die envs npm-Paket. Es gibt Umwelt-Werte, wenn Sie gesetzt sind. Andernfalls können Sie einen Standardwert angeben, gespeichert in einem globalen defaults Objekt-variable, wenn es nicht in Ihrer Umgebung.
Mit .env ("dot-ee-en-vee") oder Umwelt-Dateien ist gut für viele Gründe. Einzelpersonen können verwalten, Ihre eigenen configs. Sie können die Bereitstellung verschiedenen Umgebungen (dev, stage, prod) für cloud-Dienste mit Ihrer Umwelt Einstellungen. Und Sie können festlegen, sinnvolle Standardwerte.
In Ihrem
.env
Datei ist jede Zeile ein Eintrag, wie in diesem Beispiel:Sollten Sie nicht gehören die
.env
in Ihrem version control repository (fügen Sie es zu Ihrem.gitignore
- Datei).Um get-Variablen aus der
.env
- Datei in Ihrer Umgebung, können Sie ein bash-Skript zu tun, das äquivalent vonexport NODE_ENV=development
rechts, bevor Sie die Anwendung starten.So geht dies in Ihre Anwendung javascript:
Es hängt davon ab, Ihr Betriebssystem und Ihre shell
Auf linux mit der shell bash erstellen Sie Umgebungsvariablen wie dieser(in der Konsole):
Für weitere Informationen über Umfeld-Variablen auf ubuntu (z.B.):
Umwelt-Variablen, die auf ubuntu
Wie ctrlplusb sagte, empfehle ich Ihnen, das Paket
dotenv
, aber ein anderer Weg, dies zu tun ist die Schaffung einer js-Datei, und dass Sie auf die erste Zeile in der app-server.env.js:
app.js:
Schritt 1: Fügen Sie Ihre Umwelt-Variablen mit Ihren entsprechenden Datei. Zum Beispiel, Ihre staging-Umgebung aufgerufen werden könnte
.env.staging
enthält die UmgebungsvariablenUSER_ID
undUSER_KEY
speziell für Ihre staging-Umgebung.Schritt 2: In Ihrem
package.json
- Datei, fügen Sie den folgenden:dann rufen Sie es in Ihre deploy-Skript wie dieses:
Super einfach einzurichten und funktioniert wie ein Charme!
Quelle: https://medium.com/@tacomanator/environments-with-create-react-app-7b645312c09d
Für windows-Benutzer in diesem Stack Overflow Frage-und top-Antwort ist ganz nützlich, wie environement-Variablen über die Kommandozeile
Wie kann ich einstellen, NODE_ENV= - Produktion in Windows?
Stieß auf ein nettes tool, dies zu tun.
Knoten-env-Datei
Analysiert und lädt Umwelt-Dateien (mit ENV-variable-Exporte) in Node.js Umgebung, d.h.
process.env
- Verwendet diese Stil:Windows-Benutzer: achten Sie darauf! Diese Befehle sind empfohlen für Unix, sondern unter Windows sind Sie nur vorübergehend. Legen Sie eine variable für die aktuelle shell nur, sobald Sie starten Ihren Computer neu, oder starten Sie ein neues terminal-shell, Sie werden verschwunden sein.
SET TEST="hello world"
$env:TEST = "hello world"
Zu einem dauerhaften Umgebungsvariable unter Windows müssen Sie stattdessen verwenden Sie eine der folgenden Vorgehensweisen:
Ein) .env-Datei in Ihrem Projekt - das ist die beste Methode, weil es bedeutet, Ihr bewegen kann Ihr Projekt auf andere Systeme, ohne sich Ihrer Umgebung vars auf das system beore können Sie führen Sie den code.
Erstellen Sie eine
.env
- Datei in Ihrem Projekt-Ordner "root" mit dem Inhalt:TEST="hello world"
Schreiben einige Knoten code zum Lesen der Datei. Ich schlage vor, installieren dotenv (
npm install dotenv --save
) und fügen Sie dannrequire('dotenv').config();
während Ihres Knoten-setup-code.process.env.TEST
Env-Dateien sind eine gute halten-api-Schlüssel und andere Geheimnisse, die Sie nicht wollen, um in Ihrem code-Basis. So stellen Sie sicher, fügen Sie es zu Ihrem
.gitignore
.B) mit Powershell - dies erstellt eine variable, die zugänglich, die in anderen terminals. Aber Vorsicht, die variable wird verloren sein, nachdem Sie Ihren computer neu starten.
[Environment]::SetEnvironmentVariable("TEST", "hello world", "User")
Diese Methode wird allgemein empfohlen, auf Windows-Foren, aber ich glaube nicht, dass Menschen sind sich bewusst, dass die variable noch nicht bestehen, nach einem system-Neustart....
C) Verwenden Sie die Windows-GUI - das ist nicht so cool wie ein Befehl, aber zumindest funktioniert es und erstellt eine persistent-variable.
Als Erweiterung des @ctrlplusb Antwort,
Ich würde dir empfehlen, auch einen Blick auf die
env-Punkt-prop
Paket.Es ermöglicht Ihnen die set - /get-Eigenschaften von
process.env
mit einemdot-path
.Lassen Sie uns davon ausgehen, dass Ihre
process.env
enthält die folgenden:Dann können Sie die Umgebung manipulieren, Variablen wie:
Dies hilft Ihnen, zu analysieren, die environment-Variablen und verwenden Sie Sie als ein config-Objekt in Ihrem app.
Es hilft auch, Sie implementieren eine 12-Faktor-Konfiguration.
Einem sehr guten Weg, das zu tun Umgebungsvariablen habe ich erfolgreich eingesetzt wird unter:
A. Haben unterschiedliche config Dateien:
dev.js //diese hat alle environment-Variablen nur für die Entwicklung
Die Datei enthält:
stage.js //dieses hat alle environment-Variablen nur für die Entwicklung
qa.js //diese hat alle environment-Variablen für die qa-Tests nur
Die Datei enthält:
HINWEIS: die Werte ändern sich mit der Umgebung, meist, aber Schlüssel bleiben gleich.
können Sie mehr
z__prod.js //dieses hat alle environment-Variablen, die für die Produktion/live nur
HINWEIS: Diese Datei ist nie gebündelt für die Bereitstellung
All diese config Dateien in /config/Ordner
HINWEIS: Der name des prod ist anders als andere, als wäre es nicht von allen genutzt werden.
B. Legen Sie die OS/Lambda/AzureFunction/GoogleCloudFunction environment-Variablen aus config-Datei
Nun ideal, diese config-Variablen in der Datei, gehen sollte als OS environment-Variablen (oder einer LAMBDA-Funktion Variablen oder das Azure-Funktion Variablen, Google Cloud-Funktionen, etc.)
also schreiben wir die Automatisierung im Windows-Betriebssystem (oder andere)
Übernehmen wir schreiben 'setenv' bat-Datei, die ein argument, die Umwelt, die wir wollen
Jetzt laufen "setenv dev"
a) Dieser nimmt die Eingaben aus dem übergebenen argument-Variablen ('dev' für jetzt)
b) Lesen Sie die entsprechende Datei ('config\dev.js')
c) setzt die Umgebungsvariablen in Windows OS (oder andere)
Beispielsweise
Die setenv.bat Inhalte könnten sein:
Den setenv.js Inhalt könnte sein:
Das ist alles, Ihre Umgebung ist bereit für den Einsatz.
Wenn Sie tun 'setenv qa', alle qa-Umgebungsvariablen bereit sein, für die Nutzung von qa.js und bereit für die Verwendung durch dasselbe Programm (die sich immer fragt, für Prozess.env.someEnvKey1, aber der Wert, den es bekommt, ist qa eine).
Hoffe, das hilft.
War ich immer undefined, nach setzen einer system-env var. Wenn ich APP_VERSION in der Benutzer-env var, dann kann ich den Wert anzeigen von Knoten über Prozess.env.APP_VERSION
Machen Sie Ihr Leben einfacher mit dotenv-webpack. Installieren Sie einfach es
npm install dotenv-webpack --save-dev
, dann erstellen Sie eine.env
Datei in der Anwendung root (denken Sie daran, dass diese.gitignore
bevor Siegit push
). Öffnen Sie diese Datei, und legen Sie einige Umgebungsvariablen, wie zum Beispiel:Nun, in Ihrem webpack config hinzufügen:
Nur
const Dotenv = require('dotenv-webpack');
,plugins: [new Dotenv()]
, und natürlichmodule.exports = webpackConfig; //Export all custom Webpack configs.
erforderlich sind. Jedoch, in einigen Szenarien, die Sie möglicherweise einige Fehler. Für diese haben Sie die Lösung, wie auch implizieren, wie Sie können beheben bestimmter Fehler.Nun, wo auch immer Sie möchten, können Sie verwenden Sie einfach
process.env.ENV_VAR_1
,process.env.ENV_VAR_2
,process.env.ENV_VAR_3
in Ihrer Anwendung.