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.

488voto

SamT Punkte 10134

Umgebungsvariablen (in diesem Fall) werden verwendet, um Anmeldeinformationen an Ihre Anwendung zu übergeben. USER_ID und USER_KEY können beide über process.env.USER_ID bzw. process.env.USER_KEY abgerufen werden. Sie müssen sie nicht bearbeiten, sondern einfach auf ihre Inhalte zugreifen.

Es scheint, als würden sie Ihnen einfach die Wahl zwischen dem Laden Ihrer USER_ID und USER_KEY entweder von process.env oder einer bestimmten Datei auf der Festplatte geben.

Jetzt passiert die Magie, wenn Sie die Anwendung ausführen.

USER_ID=239482 USER_KEY=foobar node app.js

Dadurch werden die Benutzer-ID 239482 und der Benutzerschlüssel als foobar übergeben. Dies ist für Tests geeignet, für die Produktion würden Sie wahrscheinlich einige Bash-Skripte konfigurieren, um Variablen zu exportieren.

243voto

ctrlplusb Punkte 12037

Ich empfehle dringend, das dotenv-Paket zu untersuchen.

https://github.com/motdotla/dotenv

Es ist irgendwie ähnlich wie die in der Antwort von @Benxamin vorgeschlagene Bibliothek, aber es ist viel sauberer und erfordert keine Bash-Skripte. Es ist auch erwähnenswert, dass die Codebasis beliebt und gut gepflegt ist.

Im Grunde benötigen Sie eine .env-Datei (die ich dringend empfehle, aus Ihrem Git/Mercurial/etc. ausgeschlossen zu werden):

FOO=bar
BAZ=bob

Dann legen Sie in Ihrer Anwendungseingabedatei die folgende Zeile so früh wie möglich ein:

require('dotenv').config();

Boom. Erledigt. 'process.env' wird jetzt die oben genannten Variablen enthalten:

console.log(process.env.FOO);
// bar

Die '.env'-Datei ist nicht erforderlich, so dass Sie sich keine Gedanken darüber machen müssen, dass Ihre App bei deren Fehlen ausfällt.

181voto

jsbisht Punkte 8003

Sie können die Umgebungsvariable über die Prozessglobale Variable wie folgt setzen:

process.env['NODE_ENV'] = 'production';

Funktioniert auf allen Plattformen.

134voto

palanik Punkte 3591

Geben Sie einfach die Umgebungsvariablen in der Befehlszeile an

USER_ID='abc' USER_KEY='def' node app.js

65voto

Benxamin Punkte 4646

Wenn Sie eine Verwaltungsoption wünschen, probieren Sie das envs npm-Paket aus. Es gibt Umgebungswerte zurück, wenn sie festgelegt sind. Andernfalls können Sie einen Standardwert angeben, der in einer globalen defaults-Objektvariable gespeichert ist, wenn er nicht in Ihrer Umgebung vorhanden ist.

Die Verwendung von .env ("Punkt ee-en-vee") oder Umgebungsdateien ist aus vielen Gründen sinnvoll. Personen können ihre eigenen Konfigurationen verwalten. Sie können verschiedene Umgebungen (Entwicklung, Test, Produktion) mit ihren eigenen Umgebungseinstellungen in Cloud-Diensten bereitstellen. Und Sie können sinnvolle Standards festlegen.

In Ihrer .env-Datei ist jede Zeile ein Eintrag, wie in diesem Beispiel:

NODE_ENV=Entwicklung
API_URL=http://api.domain.com
TRANSLATION_API_URL=/translations/
GA_UA=987654321-0
NEW_RELIC_KEY=hi-mom
SOME_TOKEN=asdfasdfasdf
SOME_OTHER_TOKEN=zxcvzxcvzxcv

Sie sollten die .env-Datei nicht in Ihr Versionskontroll-Repository aufnehmen (fügen Sie sie Ihrer .gitignore-Datei hinzu).

Um Variablen aus der .env-Datei in Ihre Umgebung zu übernehmen, können Sie ein Bash-Skript verwenden, um das Äquivalent von export NODE_ENV=Entwicklung direkt vor dem Start Ihrer Anwendung auszuführen.

#!/bin/bash
while read line; do export "$line";
done 

`Dann wird dies in Ihrem Anwendungs-Javascript verwendet:

var envs = require('envs');

// Wenn NODE_ENV nicht festgelegt ist, 
// dann nimmt diese Anwendung standardmäßig an, dass es sich um Produktion handelt.
app.set('Umgebung', envs('NODE_ENV', 'Produktion')); 

// Beispiele zur Verwendung:
app.set('ga_account', envs('GA_UA'));
app.set('nr_browser_key', envs('NEW_RELIC_BROWSER_KEY'));
app.set('other', envs('SOME_OTHER_TOKEN));`

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