558 Stimmen

Einstellen von Umgebungsvariablen für Node zum Abrufen

Ich versuche, einem Tutorial zu folgen, und es sagt:

Es gibt einige Möglichkeiten, Anmeldeinformationen zu laden.

  1. Aus Umgebungsvariablen geladen,
  2. Aus einer JSON-Datei auf der Festplatte geladen,

Die Schlüssel müssen wie folgt sein:

USER_ID, USER_KEY

...Das bedeutet, dass wenn Sie Ihre Umgebungsvariablen ordnungsgemäß setzen, müssen Sie überhaupt keine Anmeldeinformationen in Ihrer Anwendung verwalten.

Basierend auf einigen Recherchen scheint es, dass ich die Variablen in process.env setzen muss? Wie und wo setze ich diese Anmeldeinformationen? Bitte ein Beispiel.

5voto

TacoEater Punkte 1879

Wenn Sie ein Mac/Linux verwenden und lokale Parameter des verwendeten Geräts abrufen möchten, gehen Sie wie folgt vor:

  1. Führen Sie im Terminal nano ~/.zshrc aus
  2. Fügen Sie eine Zeile hinzu wie: export MY_VAR=var
  3. Speichern Sie & führen Sie source ~/.zshrc aus
  4. Verwenden Sie in Node wie folgt: console.log(process.env.MY_VAR);

Ersetzen Sie .zshrc durch .bashrc oder Ihre Konfigurationsdatei, abhängig davon, welchen Shell Sie verwenden (und ersetzen Sie nano durch Ihren bevorzugten Editor).

4voto

asherrard Punkte 683

Für Windows-Benutzer ist diese Stack Overflow-Frage und die Top-Antworten recht nützlich, um Umgebungsvariablen über die Befehlszeile festzulegen

Wie kann ich NODE_ENV=production in Windows festlegen?

4voto

Sean McClory Punkte 4128

Bin auf ein tolles Tool gestoßen, um dies zu tun.

node-env-file

Parst und lädt Umgebungsdateien (die ENV-Variablendefinitionen enthalten) in die Node.js-Umgebung, d.h. process.env - Verwendet dieses Format:

.env

# einige Umgebungsvariablen

FOO=foo1
BAR=bar1
BAZ=1
QUX=
# QUUX=

3voto

simonepri Punkte 476

Als Ergänzung zur Antwort von @ctrlplusb,
Ich würde Ihnen auch empfehlen, sich das env-dot-prop Paket anzusehen.

Es ermöglicht Ihnen, Eigenschaften von process.env mithilfe eines dot-path zu setzen/abzurufen.

Angenommen, Ihr process.env enthält Folgendes:

process.env = {
  FOO_BAR: 'baz'
  'FOO_': '42'
}

Dann können Sie die Umgebungsvariablen folgendermaßen manipulieren:

const envDotProp = require('env-dot-prop');

console.log(process.env);
//=> {FOO_BAR: 'baz', 'FOO_': '42'}

envDotProp.get('foo');
//=> {bar: 'baz', '': '42'}

envDotProp.get('foo.');
//=> '42'

envDotProp.get('foo.', {parse: true});
//=> 42

envDotProp.set('baz.foo', 'bar');
envDotProp.get('', {parse: true});
//=> {foo: {bar: 'baz', '': 42}, baz: {foo: 'bar'}}

console.log(process.env);
//=> {FOO_BAR: 'baz', 'FOO_': '42', BAZ_FOO: 'bar'}

envDotProp.delete('foo');
envDotProp.get('');
//=> {baz: {foo: 'bar'}}

console.log(process.env);
//=> {BAZ_FOO: 'bar'}

Dies hilft Ihnen, die Umgebungsvariablen zu analysieren und diese als Konfigurationsobjekt in Ihrer App zu verwenden.
Sie ermöglicht es Ihnen auch, eine 12-Faktor-Konfiguration zu implementieren.

3voto

Ein sehr guter Weg, Umgebungsvariablen erfolgreich zu verwenden, ist unten:

A. Unterschiedliche Konfigurationsdateien haben:

  1. dev.js // enthält alle Umgebungsvariablen nur für die Entwicklung
    Die Datei enthält:

    module.exports = {
     ENV: 'dev',
     someEnvKey1 : 'some DEV Value1',
     someEnvKey2 : 'some DEV Value2'
    };
  2. stage.js // enthält alle Umgebungsvariablen nur für die Entwicklung

    ..
  3. qa.js // enthält alle Umgebungsvariablen nur für die QA-Tests
    Die Datei enthält:

    module.exports = {
     ENV: 'dev',
     someEnvKey1 : 'some QA Value1',
     someEnvKey2 : 'some QA Value2'
    };

HINWEIS: Die Werte ändern sich mit der Umgebung, aber die Schlüssel bleiben gleich.

  1. Man kann mehr haben

  2. z__prod.js // enthält alle Umgebungsvariablen nur für die Produktion/Live
    HINWEIS: Diese Datei wird niemals für den Bereitstellung gebündelt

  3. Alle diese Konfigurationsdateien in den /config/ Ordner legen

    /config/dev.js
    /config/qa.js
    /config/z__prod.js
    /setenv.js
    /setenv.bat
    /setenv.sh

HINWEIS: Der Name von prod ist anders als die anderen, da er nicht von allen verwendet wird.

B. Setze die OS/ Lambda/ AzureFunction/ GoogleCloudFunction Umgebungsvariablen aus der Konfigurationsdatei

Normalerweise sollten diese Konfigurationsvariablen in der Datei als OS-Umgebungsvariablen (oder LAMBDA-Funktionsvariablen, Azure-Funktionsvariablen, Google Cloud Functions usw.) gesetzt werden

also schreiben wir Automatisierung in Windows OS (oder anderen)

  1. Angenommen, wir schreiben eine 'setenv'-Bat-Datei, die ein Argument annimmt, nämlich die Umgebung, die wir setzen möchten

  2. Führe jetzt "setenv dev" aus

a) Dies nimmt den Input aus der übergebenen Argumentvariable ('dev' für jetzt)
b) liest die entsprechende Datei ('config\dev.js')
c) setzt die Umgebungsvariablen in Windows OS (oder anderen)

Zum Beispiel,

Der Inhalt der setenv.bat könnte sein:

    node setenv.js

Der Inhalt der setenv.js könnte sein:

    // "process.env.ENV".js Datei importieren (Beispiel dev.js)
    // die importierten Dateiinhalte durchlaufen
    //     die Umgebungsvariablen in Windows OS (oder, Lambda usw.) setzen

Das ist alles, deine Umgebung ist einsatzbereit.

Wenn du 'setenv qa' durchführst, sind alle QA-Umgebungsvariablen aus qa.js bereit für den Einsatz, und bereit für die Verwendung durch dasselbe Programm (das immer nach process.env.someEnvKey1 fragt, aber der Wert, den es erhält, ist qa).

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X