412 Stimmen

"NODE_ENV" wird nicht als internes oder externes Kommando, operables Kommando oder Batch-Datei erkannt

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 erkannt, ausführbares Kommando oder Batch-Datei erkannt.

Was bedeutet das und wie kann ich dieses Problem lösen?

Ich verwende Windows und habe auch versucht set NODE_ENV=development hatte aber kein Glück.

51voto

Rohit Goel Punkte 3294

Ich hatte das gleiche Problem auf einer Windows-Plattform und habe einfach den folgenden Befehl ausgeführt

npm install -g win-node-env

und alles funktioniert normal

3 Stimmen

Hat wunderbar funktioniert, ich brauchte das für ein Projekt, bei dem wir auf mehreren Plattformen (Mac und Windows) entwickeln.

1 Stimmen

Was genau wird damit erreicht?

1 Stimmen

44voto

Flion Punkte 9646
set NODE_ENV=production & nodemon app/app.js

wird NODE_ENV zu ein Leerzeichen enthalten am Ende:

process.env.NODE_ENV == 'production'; //false
process.env.NODE_ENV == 'production '; //true

Wie in einem Kommentar erwähnt aquí verwenden Sie stattdessen dies:

NODE_ENV=production&& nodemon app/app.js

0 Stimmen

Das war ein Lebensretter!

0 Stimmen

Sie sind der Mann, hat perfekt funktioniert

1 Stimmen

Set NODE_ENV=production & nodemon app/app.js perfact

39voto

Jon Crowell Punkte 20512

Die Anpassung Ihrer Skripte an Windows ist eine echte Herausforderung. Der Versuch, die passenden Windows-Übersetzungen herauszufinden und 2 Skriptsätze zu pflegen, ist keine Art, sein Leben zu leben.

Es ist viel einfacher, npm so zu konfigurieren, dass es die Bash unter Windows verwendet, und Ihre Skripte laufen so wie sie sind.

Einfach ausführen 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 Rechner korrekt ist. Sie müssen wahrscheinlich eine neue Instanz des Terminals starten, damit die Änderung wirksam wird.

Die folgende Abbildung veranschaulicht diesen Vorteil.

  1. npm ERR! beim Versuch, das Skript zu starten.
  2. Das für Windows geänderte Skript wird ausgeführt, zeigt aber nicht die Rückmeldung an.
  3. Nach der Aktualisierung von npm config zur Verwendung von bash wird das Skript ausgeführt und gibt die entsprechende Meldung zurück.

Getting npm scripts to run as is in Windows

2 Stimmen

YES! Genau das, was ich brauchte! Wer will npm install -g more-cr*p sowieso?

1 Stimmen

Dies sollte die akzeptierte Antwort sein. Die Verwendung von git bash für Windows ist SO viel besser als cmd . Es gibt definitiv andere Optionen wie direkt mit cygwin oder WSL verwenden, aber so viele node.js Skripte wollen Shell verwenden, dass dies nur MAKES SENSE. Auch, yarn hat eine ähnliche Konfigurationsoption .

17voto

user3790180 Punkte 423

Für diejenigen, die Git Bash verwenden und Probleme mit npm run <script> ,

Stellen Sie npm einfach so ein, dass Git Bash zum Ausführen von Skripten verwendet wird

npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe" (ändern Sie den Pfad je nach Ihrer Installation)

Und dann führt npm Skripte mit Git Bash aus, also solche Verwendungen wie NODE_ENV= ordnungsgemäß funktionieren wird.

9voto

Ishan Kesharwani Punkte 254

Das hat bei mir funktioniert, da es eine einfache Lösung ist. Ich habe ein Repository geklont, das unter Windows entwickelt wurde, aber ich verwende MACOS.

Wenn Sie Windows verwenden, verwenden Sie SET als Präfix:

"scripts": {
    "dev": "SET NODE_ENV=development && nodemon index.js",
  },

Aber wenn Sie MacOS verwenden das Schlüsselwort SET entfernen und verwenden:

"scripts": {
    "dev": "NODE_ENV=development && nodemon index.js",
  },

Also in einem Nussschale

Wenn Sie Windows verwenden, verwenden Sie SETZEN Präfix vor Ihren Skripten und SET entfernen von MacOS (wahrscheinlich auch LINUX) wie oben gezeigt.

0 Stimmen

@Ishan_Kesharwani Leerzeichen ist wichtig vor && in der Windows-Umgebung und in diesem Beispiel ist NODE_ENV "development", um das Leerzeichen nach dem String "development" zu entfernen, sollten die Anweisungen in dev mit && ohne Leerzeichen getrennt werden.

1 Stimmen

Bei Mac funktionierte es ohne && Was bei mir funktioniert hat, ist NODE_ENV=development nodemon app.mjs

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X