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.

2voto

Jonatas Walker Punkte 12467

Ganz ähnlich wie einige andere Antworten, aber ohne Bibliothek und ohne (Bash) export.

Ich habe einige verschlüsselte Variablen, die ich dann dynamisch erstellen muss.

Das Magische passiert mit set -a && ... && set +a, das etwas Inhalt oder eine Datei sein kann.

#!/bin/sh

set -a    
SOMEVAR_A="abcd"
SOMEVAR_B="efgh"
SOMEVAR_C=123456
set +a

# oder
set -a && . ./file && set +a

Ich habe ein docker-entrypoint.sh mit:

#!/bin/sh

node app/config/set-environment.js

ENVFILE=/tmp/.env

if [[ ! -f "$ENVFILE" ]] ; then
    echo "Datei $ENVFILE ist nicht vorhanden, Abbruch."
    exit
fi

# hier passieren die Dinge
set -a && . $ENVFILE && set +a

if [ "${NODE_ENV}" = "development" ]; then
  npx nodemon app/server.js
else
  node app/server.js
fi

exec "$@"

Während set-environment.js eine (temporäre) .env Datei generiert

1voto

Pawel Punkte 12592

Verwenden Sie cross-env. Es wird Ihnen viele Kopfschmerzen ersparen

npm i -S cross-env

cross-env PARAM=wert node ./index.js

Das ist normalerweise gut für Nicht-Anmeldeinformationen. Für Dinge wie Anmeldeinformationen und Schlüssel ist es besser, Benutzer-ID und Passwort nicht hartcodiert zu speichern, sondern die .env Datei zu verwenden, die nicht im Repo ist und dotenv

0voto

omencat Punkte 1085

Ich habe nach dem Setzen einer Systemumgebungsvariable "undefined" erhalten. Wenn ich APP_VERSION in der Benutzerumgebungsvariable ablege, kann ich den Wert über process.env.APP_VERSION in Node anzeigen.

0voto

emrhzc Punkte 1257

Wenn Sie die Debugging-Funktion von Visual Studio Code verwenden, können Sie "envFile": "${workspaceRoot}/.env" zur Startkonfiguration hinzufügen. Auf diese Weise müssen Sie kein dotenv verwenden.

{
        "cwd": "${workspaceRoot}",
        "command": "npm start",
        "name": "Beispiel ausführen",
        "request": "launch",
        "type": "node-terminal",
        "envFile": "${workspaceRoot}/.env"
},

0voto

Bob Smith Punkte 108

Erstellen Sie eine Datei namens local-env und füllen Sie sie mit Variablen

PORT=80
DB_NAME=foo
SOME_URL=example.com

Führen Sie nun Node wie folgt aus:

source ./local_env ; node index.js

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