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.

633voto

laggingreflex Punkte 29759

Dafür habe ich ein Modul geschrieben: win-node-env .

Sie schafft eine NODE_ENV.cmd die die NODE_ENV Umgebungsvariable und erzeugt einen Kindprozess mit dem Rest des Befehls und seinen Argumenten.

Installieren Sie es einfach (global), und führen Sie Ihre npm-Skriptbefehle aus, dann sollten sie automatisch funktionieren.

npm install -g win-node-env

40 Stimmen

Es funktioniert! Und ich musste keine Befehle ändern. Das ist die Antwort.

10 Stimmen

Das ist die einfachste Antwort

1 Stimmen

Wie kann ich benutzerdefinierte Variablen zu Ihrem Skript hinzufügen?

423voto

Jim O'Neil Punkte 23136

Es klingt, als ob Ihr Fehler von dem Versuch herrührt, etwas wie das folgende auszuführen (das unter Linux funktioniert)

NODE_ENV=development node foo.js

Die Entsprechung unter Windows wäre

SET NODE_ENV=development
node foo.js

die in derselben Befehlsshell laufen. Sie erwähnten, dass set NODE_ENV nicht funktioniert, aber es war nicht klar, wie/wann Sie es ausgeführt haben.

0 Stimmen

Danke Jim, ich habe es in der Befehlszeile verwendet und aus der package.json Datei entfernt. aber ich bin danach auf ein anderes Problem gestoßen. es sieht so aus, als ob Node-Module nicht vollständig von Windows unterstützt werden. ich habe einen weiteren Fehler mit bcrypt und gyp.

0 Stimmen

Kein Experte hier, aber bcrypt zeigt Unterstützung für Windows, aber erfordert openSSL, nicht sicher, ob das hilft. Wenn nicht, sollten Sie vielleicht eine neue Frage stellen, da sich das Szenario ein wenig geändert hat.

12 Stimmen

Obwohl dies tatsächlich funktioniert, denke ich, dass @Susan-stack die richtige Antwort gegeben hat - eine plattformübergreifende Lösung und keine Änderung der Zeile, die unter Windows funktioniert, aber andere Betriebssysteme kaputt macht.

288voto

Mahmudul Hasan Punkte 2769

Für Windows verwenden & auch zwischen den Befehlen. Zum Beispiel,

  "scripts": {
    "start": "SET NODE_ENV=development & nodemon app/app.js",
  }

11 Stimmen

Der Befehl funktioniert, aber der Wert von NODE_ENV ist "Entwicklung" (der Leerraum zwischen "t" und "&" wird durch NODE_ENV )

1 Stimmen

Genau das, was @roroinpho21 sagt. jetzt muss ich .trim() den Wert später zu machen process.env.NODE_ENV == 'production' Arbeit. Lässt sich dies bei einem Einzeiler vermeiden?

0 Stimmen

Menschen, die es nicht hinbekommen haben, "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.

195voto

Susan-stack Punkte 1821
  1. npm install --save-dev "cross-env" Modul.
  2. Ändern Sie den Code wie folgt cross-env NODE_ENV=development node foo.js . Dann können Sie den Befehl wie folgt ausführen npm run build .

14 Stimmen

Bitte vergessen Sie nicht, Folgendes beizufügen cross-env zu den Abhängigkeiten in package.json

4 Stimmen

Cross-env beste Antwort!

2 Stimmen

Die Bibliothek ist hier: github.com/kentcdodds/cross-env -- und auf dieser Seite steht, dass cross-dev in devDependencies aufgenommen werden soll 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 sagte env VARNAME=varvalue && ... (entfernen Sie einfach env und fügen Sie stattdessen cross-env ein). Die Entwickler müssen nichts mehr global installieren oder verschiedene npm-Skripte für verschiedene Plattformen haben!

73voto

AmerllicA Punkte 22941

Verwenden Sie win-node-env Um es zu benutzen, führen Sie einfach den folgenden Befehl auf Ihrem Computer aus cmd o power shell o git bash :

npm install -g win-node-env

Danach ist alles wie bei Linux.

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