2016-05-21 6 views
1

Gibt es eine Möglichkeit, die NODE_PATH env-Variable nach dem Start des Knotens zu setzen?NODE_PATH exportieren, nachdem der ausführbare Knoten ausgeführt wurde

, wenn ich dies tun:

async.series([ 
     function export_NODE_PATH(cb){ 
      cp.exec('export NODE_PATH=$(npm root -g):$NODE_PATH',cb); 
     },... 

es wird nicht funktionieren, aber wenn ich NODE_PATH gesetzt, bevor der Knoten starten, wird es als

export NODE_PATH=$(npm root -g):$NODE_PATH && node index --transpile test 

ist es eine Möglichkeit, das setzen erwartungs Umgebungsvariable in der Laufzeit von node.js, ohne sie vor der Ausführung in der Befehlszeile festlegen zu müssen? Ist es so einfach wie process.env.NODE_PATH während der Laufzeit zu setzen?

Zum Beispiel scheint dies zu funktionieren:

cp.exec('echo $(npm root -g)', function (err, stdout, stderr) { 
    if (err || String(stdout).match(/error/i) || String(stderr).match(/error/i)) { 
     cb(err || stdout || stderr); // my funky way of handling this 
    } 
    else { 
     process.env.NODE_PATH += stdout; 
     cb(null); 
    } 
    }); 

aber ich weiß nicht, wie koscher, das heißt, und es eigentlich nicht zu funktionieren scheint, nach einem weiteren Prüfung.

Antwort

1

Eine Möglichkeit, dies zu erreichen, besteht darin, eine .env-Datei zu erstellen und eine npm-Bibliothek namens dotenv zu verwenden, um die .env-Dateivariablen automatisch in Ihre process.env zu laden. Die Schritte umfassen die folgenden:

Schritt 1: Eine .env Datei in Ihrem Projektverzeichnis $ touch .env

Schritt 2: Ort der folgende Text in Ihrer .env Datei "NODE_ENV=yourvaluehere" (ohne Anführungszeichen)

Schritt 3: Installieren dotenv $ npm install dotenv --save

Schritt 3: In den js Sie den Server starten Datei ausführen, fügen Sie folgendes require('dotenv').config();

Viola, Sie setzen jetzt Umgebungsvariablen in Ihrem Knotenprozess über eine env-Datei. Ihr process.env wird alle Schlüsselwertpaare in Ihrer .env Datei gespeichert haben!

1

Einstellung process.env.NODE_PATH (oder jede andere env var) ist perfekt "legal" - in der Tat, das ist, wie Bibliotheken wie dotenv und yenv ihre Magie machen.

+1

gegeben einige Tests, die ich gerade getan habe, neu zuzuordnen process.env.NODE_PATH während der Laufzeit scheint nicht zu arbeiten, schaue ich auf den Quellcode der Bibliotheken Sie erwähnt, um herauszufinden, wie sie es tun, wenn Sie wissen, jedoch Bitte erweitern Sie Ihre Antwort thx! –

+1

Stellen Sie sicher, dass Sie es zuweisen, bevor es verwendet wird - nicht sicher, ob NODE_PATH speziell ist – Jeff

Verwandte Themen