Dies ist meine App, ich laufe gerade in der Produktion.
var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
app.use(express.favicon());
app.use(express.static(settings.c.WEB_PATH + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.session({
cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
secret:'hamster',
store: r_store,
}));
app.use(useragent.express());
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
});
Ich habe es jedoch kennengelernt NODE_ENV
und möchte es verwenden. Wie kann ich das machen?
javascript
node.js
express
TIMEX
quelle
quelle
app.configure('development', ...)
"Produktion" verwenden können, um bestimmte Einstellungen nur für Entwicklungs- oder Produktionsumgebungen festzulegen. Siehe expressjs.com/api.html#app.configureAntworten:
NODE_ENV
ist eine Umgebungsvariable, die durch das Express- Webserver-Framework populär gemacht wird . Wenn eine Knotenanwendung ausgeführt wird, kann sie den Wert der Umgebungsvariablen überprüfen und basierend auf dem Wert verschiedene Aktionen ausführen.NODE_ENV
wird speziell (gemäß Konvention) verwendet, um anzugeben, ob eine bestimmte Umgebung eine Produktions- oder eine Entwicklungsumgebung ist . Ein häufiger Anwendungsfall ist das Ausführen von zusätzlichem Debugging- oder Protokollierungscode, wenn er in einer Entwicklungsumgebung ausgeführt wird.Zugriff auf NODE_ENV
Mit dem folgenden Code können Sie selbst auf die Umgebungsvariable zugreifen, um Ihre eigenen Überprüfungen und Logik durchzuführen:
var environment = process.env.NODE_ENV
Oder alternativ mit express '
app.get('env')
( Hinweis: dies ist standardmäßig"development"
)Beachten Sie
NODE_ENV
, dass dies der Fall ist , wenn Sie dies nicht explizit für Ihre Umgebung festgelegt habenundefined
.NODE_ENV einstellen
Wie die Umgebungsvariable tatsächlich festgelegt wird, variiert von Betriebssystem zu Betriebssystem und hängt auch von Ihrer Benutzerkonfiguration ab.
Wenn Sie die Umgebungsvariable einmalig festlegen möchten, können Sie dies über die Befehlszeile tun:
export NODE_ENV=production
$env:NODE_ENV = 'production'
Langfristig sollten Sie dies beibehalten, damit es beim Neustart nicht deaktiviert wird. Anstatt alle möglichen Methoden dafür aufzulisten, lasse ich Sie selbst suchen, wie das geht!
Die Konvention hat vorgeschrieben, dass es nur zwei Werte gibt, die Sie
NODE_ENV
entwederproduction
oderdevelopment
nur in Kleinbuchstaben verwenden sollten. Es hindert Sie nichts daran, weitere Werte hinzuzufügen, aber es ist wahrscheinlich keine gute Idee, da ich in vielen der von mir verwendeten node_modules viel von dieser Art von Code sehe:Beachten Sie, dass es sich um eine ist wirklich schlechte Idee, Satz zu versuchen ,
NODE_ENV
von innerhalb eines Knotens Anwendung selbst - wenn Sie es tun wird nur auf den Prozess , aus dem es wurde festgelegt , so die Dinge wahrscheinlich nicht funktionieren wie Sie es erwarten. Tu es nicht - du wirst es bereuen.quelle
app.configure()
wurde entfernt. Im Express 4-Migrationshandbuch wird empfohlen, " die Umgebung zu verwendenprocess.env.NODE_ENV
oderapp.get('env')
zu erkennen und die App entsprechend zu konfigurieren".app.get('env')
genau aus diesem Grund nicht verwenden sollten . Es wird verdeckt, dass diese wichtige Variable nicht festgelegt ist - was dazu führt, dass Dinge inkonsistent erscheinen, wenn Sie von außerhalb von Express darauf zugreifen. Darüber hinaus halte ich es für weniger schädlich, wenn Debug-Code versehentlich nicht in einer Entwicklungsumgebung ausgeführt wird, als wenn er versehentlich in einer Produktionsumgebung ausgeführt wird.development
bedeutet unter anderem, dass Vorlagen für jede Anforderung erneut verarbeitet werden. Die Folge ist ein Leistungsgewinn oder -verlust von ~ 75% zwischen Produktion und Entwicklung bei Verwendung von Jade. Ich habe auch einen Blog-Beitrag auf diesem apmblog.dynatrace.com/2015/07/22/…NODE_ENV ist eine Umgebungsvariable, die für steht Knotenumgebung in Express - Server.
So stellen wir fest und erkennen, in welcher Umgebung wir uns befinden.
Es ist sehr häufig mit
production
unddevelopment
.Einstellen:
Bekommen:
Sie können es mit bekommen
app.get('env')
quelle
Ich gehe davon aus, dass die ursprüngliche Frage enthielt, wie Express diese Umgebungsvariable verwendet.
Express verwendet NODE_ENV, um sein eigenes Standardverhalten zu ändern. Im Entwicklungsmodus sendet der Standard-Fehlerbehandler beispielsweise eine Stapelverfolgung an den Browser zurück. Im Produktionsmodus besteht die Antwort einfach darin
Internal Server Error
, zu vermeiden, dass Implementierungsdetails an die Welt weitergegeben werden.quelle