Ich versuche, eine Umgebung für eine Node.js-App einzurichten. Aber ich bekomme jedes Mal diesen Fehler.
"NODE_ENV" wird nicht als interner oder externer Befehl, bedienbarer Befehl oder Batchdatei erkannt.
Was bedeutet das und wie kann ich dieses Problem lösen?
Ich benutze Windows und habe es auch versucht set NODE_ENV=development
, hatte aber kein Glück.
Ich habe ein Modul dafür geschrieben: win-node-env .
Es wird eine erstellt
NODE_ENV.cmd
, die dieNODE_ENV
Umgebungsvariable festlegt und einen untergeordneten Prozess mit dem Rest des Befehls und seinen Argumenten erzeugt.Installieren Sie es einfach (global) und führen Sie Ihre npm-Skriptbefehle aus. Es sollte automatisch funktionieren.
quelle
für Windows auch
&
Zwischenbefehl verwenden. Mögen,quelle
NODE_ENV
wird 'Entwicklung' sein (der Leerraum zwischen 't' und '&' wird von enthalten seinNODE_ENV
).trim()
den Wert später zumprocess.env.NODE_ENV == 'production'
Arbeiten bringen. Wie auch immer, um dies in einem Oneliner zu vermeiden?"test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'"
falsch"test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js"
wahr . Sie müssen die' '
um die js-Datei herum entfernen.npm install "cross-env"
Modul.cross-env NODE_ENV=development node foo.js
. Dann können Sie dergleichen ausführennpm run build
.quelle
cross-env
, die Abhängigkeiten inpackage.json
npm install --save-dev cross-env
. Dies hilft auch bei dem Fehler,'env' is not recognized as an internal or external command
wenn das npm-Skript sagtenv VARNAME=varvalue && ...
(entfernen Sie einfach env und fügen Sie stattdessen cross-env ein). Entwickler müssen nichts global installieren oder unterschiedliche npm-Skripte für unterschiedliche Plattformen haben!Verwenden Sie win-node-env . Um es zu verwenden, führen Sie einfach den folgenden Befehl auf Ihrem
cmd
oderpower shell
oder ausgit bash
:Danach ist alles wie unter Linux.
quelle
bewirkt, dass NODE_ENV am Ende ein Leerzeichen enthält :
Verwenden Sie stattdessen, wie in einem Kommentar hier erwähnt , Folgendes:
quelle
NODE_ENV="production"
?&
und einem Doppelzimmer&&
? Beide scheinen für mich zu arbeiten.Das Ändern Ihrer Skripte an Windows ist ein königlicher Schmerz. Der Versuch, die geeigneten Windows-Übersetzungen herauszufinden und zwei Skriptsätze zu verwalten, ist keine Möglichkeit, Ihr Leben zu leben.
Es ist viel einfacher, npm für die Verwendung von bash unter Windows zu konfigurieren, und Ihre Skripte werden unverändert ausgeführt.
Einfach laufen
npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
. Stellen Sie sicher, dass der Pfad zur ausführbaren Bash-Datei für Ihren Computer korrekt ist.Sie müssen wahrscheinlich eine neue Instanz des Terminals starten, damit die Änderung wirksam wird.Der folgende Screenshot zeigt den Vorteil.
quelle
Für diejenigen, die Git Bash verwenden und Probleme mit haben
npm run <script>
,Stellen Sie einfach npm ein, um Git Bash zum Ausführen von Skripten zu verwenden
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
(Ändern Sie den Pfad entsprechend Ihrer Installation)Und dann führt npm Skripte mit Git Bash aus, so dass solche Verwendungen wie
NODE_ENV=
richtig funktionieren.quelle
Hat für mich gearbeitet
quelle
Die meisten Antworten dort oben haben mir nicht geholfen.
Was mir geholfen hat war
NODE_ENV=production&& nodemon app/app.js
Beachten Sie den Platz. Viel Glück.
quelle
Für Windows öffnen Sie Git Bash und versuchen Sie es
NODE_ENV=production node app.js
quelle
npm <scripts_entry>
, wird ein Fehler mit unterschiedlicher Phrasierung, aber gleichwertiger Bedeutung angezeigt: Der Name env var wird als ausführbare Datei behandelt.npm run <script>
verwendet standardmäßig Windows cmd , um Befehle auszuführen. Sie können festlegen, dass Git Bash verwendet wird.npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
Und dannnpm run
wird Git Bash verwendet, um Skripte auszuführen.Wenn jemand wie ich hierher gekommen ist, um eine Lösung für den Fehler zu finden:
Der Grund dafür ist, dass ich eine eckige Lösung von einem Mac-Entwicklungscomputer auf einen Windows 10-Desktop migriert habe. So habe ich es gelöst.
Lauf
npm install --save-dev cross-env
Gehen Sie in meine Datei package.json und ändern Sie alle Skriptreferenzen von
env <whatever>
incross-env <whatever>
Dann mögen meine Befehle:
npm run start:some_random_environment_var
Jetzt laufen sie gut unter Windows 10.quelle
process.env.NODE_ENV fügt ein weißer Raum dies tun
quelle
Für Windows kann man es so machen
quelle