Zur Verwendung in express.js-Umgebungen. Irgendwelche Vorschläge?
javascript
node.js
macos
environment-variables
Mark Gia Bao Nguyen
quelle
quelle
Antworten:
Bevor Sie Ihre App ausführen, können Sie dies in der Konsole tun.
Oder wenn Sie in Windows sind, können Sie dies versuchen:
oder Sie können Ihre App folgendermaßen ausführen:
Sie können es auch in Ihrer js-Datei festlegen:
Ich empfehle jedoch nicht, dies in Ihrer Laufzeitdatei zu tun, da es nicht einfach ist, VIM auf Ihrem Server zu öffnen und auf Produktion umzustellen. Sie können eine config.json-Datei in Ihrem Verzeichnis erstellen. Jedes Mal, wenn Ihre App ausgeführt wird, liest sie daraus und legt die Konfiguration fest.
quelle
process.env.NODE_ENV
zuverlässig über die App selbst vorzunehmen. Stellen Sie Ihre Umgebungsvariable am besten richtig ein, wie Daniel unten verlinkt hat.NODE_ENV
expliziten Einstellungen jedes Mal, wenn Sie die App ausführen, wie im zweiten Beispiel (NODE_ENV=production node app.js
). Auf diese Weise ersparen Sie sich möglicherweise ein paar zukünftige Haarsträhnen, falls Sie vergessen, Ihren lokalen StandortNODE_ENV
zurückzusetzendevelopment
.cross-env NODE_ENV=production
funktioniert unter Windows und Linux / Mac.NODE_ENV=production forever app.js
sollte funktionieren.in package.json:
dann im Terminal ausführen:
quelle
NODE_ENV=production
Einfügen von package.json macht wenig Sinn. Wenn Sienpm start
in der Entwicklung arbeiten, wird es in der Produktion ausgeführt. Sie können Ihren Code so schreiben, als wäre er immer eine Produktion, da Sie ihn immer so ausführen. Der einzige Grund, warum ich dies sehe, besteht darin, andere Module (z. B. Express) zu zwingen, im Produktionsmodus ausgeführt zu werden. Warum überhaupt Umgebungsvariablen verwenden, wenn sie sich nie ändern?.env
Hier noch niemand erwähnt ? Erstellen Sie dann eine.env
Datei in Ihrem App-Stammverzeichnisrequire('dotenv').config()
und lesen Sie die Werte. Leicht zu ändern, leicht zu lesen, plattformübergreifend.https://www.npmjs.com/package/dotenv
quelle
"mode": "production"
in der.env
Datei funktioniert.export NODE_ENV=production
ist eine schlechte Lösung, sie verschwindet nach dem Neustart.Wenn Sie sich nicht mehr um diese Variable kümmern möchten, fügen Sie sie dieser Datei hinzu:
Verwenden Sie keine Exportsyntax, schreiben Sie einfach (in eine neue Zeile, wenn bereits Inhalte vorhanden sind):
es funktioniert nach dem Neustart. Sie müssen den Befehl export NODE_ENV = Production nirgendwo mehr erneut eingeben und den Knoten nur mit allem verwenden, was Sie möchten - für immer, pm2 ...
Für Heroku:
Das ist eigentlich Standard.
quelle
NODE_ENV=production gulp bundle-production-app
es, um ein produktionsfertiges Skript zu bündeln. Auf dem Server befindet sich NODE_ENV in der Serverumgebung und auf dem Dev-Computer nicht. In einigen Maschinen ist es ein Albtraum, wenn es nicht eingestellt ist und Sie erwarten, dass es immer eingestellt ist . In einigen Fällen erwarten Sie, dass Sie es nicht haben, also fügen Sie es nicht hinzu. Wie auch immer, während ich Benutzeroberflächen mache, mache ich klar, ob es sich im Entwicklungsmodus befindet, so dass Sie nie eine Frage haben, ob es ein- oder ausgeschaltet ist. Wenn NODE_ENV! == Produktion ist, ist es in Ihrem Gesicht, dass Sie sich in einem anderen Modus befinden, also überhaupt kein Albtraum. Alles klar, alles gut./etc/environment
und ausführenexport NODE_ENV=production
?Um sich keine Sorgen machen zu müssen, ob Sie Ihre Skripte unter Windows, Mac oder Linux ausführen, installieren Sie das Cross-Env- Paket. Dann können Sie Ihre Skripte einfach verwenden, wie folgt:
Massive Requisiten an die Entwickler dieses Pakets.
quelle
quelle
NODE_ENV=production
ist jetzt die Standardeinstellung in Heroku node.js.Verwenden Sie für Windows Powershell diesen Befehl
quelle
Unter OSX würde ich empfehlen,
export NODE_ENV=development
zu Ihrem~/.bash_profile
und / oder~/.bashrc
und / oder hinzuzufügen~/.profile
.Persönlich füge ich diesen Eintrag zu meinem hinzu
~/.bashrc
und habe dann den~/.bash_profile
~/.profile
lasse dann den Inhalt dieser Datei importieren, damit er in allen Umgebungen konsistent ist.Stellen Sie nach diesen Ergänzungen sicher, dass Sie Ihr Terminal neu starten, um die Einstellungen zu übernehmen.
quelle
Wenn Sie unter Windows sind. Öffnen Sie dann zuerst Ihren cmd im rechten Ordner
Drücken Sie die Eingabetaste, dann können Sie Ihren Knoten mit starten
Es beginnt mit Ihrer Env-Einstellung
quelle
Wenn Sie Webpack in Ihrer Anwendung verwenden, können Sie es dort einfach mit festlegen
DefinePlugin
...plugin
Setzen Sie in Ihrem Abschnitt NODE_ENV aufproduction
:quelle
Um mehrere Umgebungen zu haben, benötigen Sie alle Antworten zuvor (NODE_ENV-Parameter und exportieren Sie ihn), aber ich verwende einen sehr einfachen Ansatz, ohne etwas installieren zu müssen. Fügen Sie in Ihre package.json einfach ein Skript für jede Umgebung ein, die Sie benötigen, wie folgt:
Starten Sie dann die App, anstatt sie zu
npm start
verwendennpm run script-prod
.Im Code können Sie mit auf die aktuelle Umgebung zugreifen
process.env.NODE_ENV
.Voila.
quelle
Windows CMD ->
set NODE_ENV=production
Windows Powershell ->
$env:NODE_ENV="production"
MAC ->
export NODE_ENV=production
quelle
Daniel hat eine fantastische Antwort, die der bessere Ansatz für den richtigen Bereitstellungsprozess (Setzen und Vergessen) ist.
Für diejenigen, die Express verwenden. Sie können den Grunt-Express-Server verwenden, der ebenfalls fantastisch ist. https://www.npmjs.org/package/grunt-express-server
quelle
Möglicherweise haben Sie zwei Instanzen eines Folgeobjekts erstellt
zum Beispiel: var con1 = new Sequelize (); var con2 = new Sequelize ();
dann tritt auch der gleiche Fehler auf
quelle