Ich versuche, einem Tutorial zu NodeJs zu folgen. Ich glaube nicht, dass ich etwas verpasst habe, aber wenn ich anrufe, ist process.env.NODE_ENV
der einzige Wert, den ich zurück bekomme, undefiniert. Nach meinen Recherchen sollte der Standardwert "Entwicklung" sein. Wie wird dieser Wert dynamisch gesetzt und wo wird er anfänglich gesetzt?
javascript
node.js
Basheps
quelle
quelle
heroku config:set NODE_ENV="production"
Antworten:
process.env ist ein Verweis auf Ihre Umgebung, daher müssen Sie die Variable dort festlegen.
So legen Sie eine Umgebungsvariable in Windows fest :
unter OS X oder Linux :
quelle
export NODE_ENV=development
auf meinem Mac-Terminal ausgeführt, bevor ich einereact-native run-ios
vom selben Terminal aus ausgeführt habe. Beim Debuggen ist der Wert vonprocess.env.NODE_ENV
undefiniert.Tipps
in
package.json
:in
app.js
:Das kann also besser sein:
oder
quelle
"start": "set NODE_ENV=dev&& node app.js"
console.log(process.env.NODE_ENV.length)
// 4 (einschließlich eines Leerzeichens am Ende)console.log(('' + process.env.NODE_ENV).trim() === 'dev') // true
Es wird kein Fehler ausgegeben, selbst wenn process.env.NODE_ENV undefiniert ist.Für Benutzer von * nix (Linux, OS X usw.) gibt es keinen Grund, dies über einen zweiten Exportbefehl zu tun. Sie können es als Teil des aufrufenden Befehls verketten:
Einfacher, nein? :) :)
quelle
Bei der Arbeit mit Node unter Windows ist dieses Problem aufgetreten.
Anstatt zu verlangen, dass jemand, der versucht, die App auszuführen, diese Variablen festlegt, haben wir einen Fallback innerhalb der Anwendung bereitgestellt.
In einer Produktionsumgebung würden wir es nach den üblichen Methoden (SET / Export) definieren.
quelle
Sie können das Paket cross-env npm verwenden. Es kümmert sich um das Trimmen der Umgebungsvariablen und stellt auch sicher, dass es auf verschiedenen Plattformen funktioniert.
Führen Sie im Projektstamm Folgendes aus:
Fügen Sie dann in Ihrer package.json unter Skripten Folgendes hinzu:
Starten Sie dann in Ihrem Terminal im Projektstamm Ihre App, indem Sie Folgendes ausführen:
Die Umgebungsvariable ist dann in Ihrer App als verfügbar
process.env.NODE_ENV
, sodass Sie Folgendes tun können:quelle
in package.json müssen wir wie unten konfigurieren (funktioniert unter Linux und Mac OS)
Das Wichtigste ist "NODE_ENV = Produktion exportieren", nachdem Ihre Build-Befehle unten ein Beispiel sind:
Für die Entwicklungsumgebung müssen wir den Befehl "npm run dev" drücken
Für eine Produktionsumgebung müssen wir den Befehl "npm run start" drücken
quelle
In macOS müssen diejenigen, die die Express-Version
4.x.x
und dasDOTENV
Plugin verwenden, Folgendes verwenden:Nach der Installation des Plugins importieren Sie wie folgt in die Datei, in der Sie die Anwendung starten:
require('dotenv').config({path: path.resolve(__dirname+'/.env')});
Erstellen Sie im Stammverzeichnis eine Datei '.env' und fügen Sie die Variable wie folgt hinzu:
NODE_ENV=development
oderNODE_ENV = development
quelle
Verwenden Sie in UBUNTU:
$ export NODE_ENV = test
quelle
Es liegt am Betriebssystem
Stellen Sie in Ihrer package.json sicher, dass Ihre Skripte vorhanden sind (wobei app.js Ihre wichtigste auszuführende js-Datei ist und NODE_ENV in einer .env-Datei deklariert ist) .Eg:
Für Windows
Richten Sie auch Ihre .env-Dateivariable mit NODE_ENV = development ein
Wenn sich Ihre .env-Datei in einem Ordner für den Ordner eg.config befindet, müssen Sie dies in app.js (Ihrer Haupt-js-Datei) angeben.
const dotenv = require ('dotenv'); dotenv.config ({path: './config/config.env'});
quelle
Wenn Sie in React auf dieses Problem gestoßen sind, benötigen Sie [email protected] und höher. Auch für andere Umgebungsvariablen als
NODE_ENV
die Funktion in React muss ihnen ein Präfix vorangestellt werdenREACT_APP_
.quelle
Fordern und konfigurieren Sie so früh wie möglich in Ihrer Anwendung dotenv.
require('dotenv').config()
quelle
Sie können es auch per Code einstellen, zum Beispiel:
process.env.NODE_ENV = 'test';
quelle