「NODE_ENV」は、内部または外部コマンド、操作可能なコマンド、またはバッチファイルとして認識されません


208

Node.jsアプリの環境をセットアップしようとしています。でも毎回このエラーが出ます。

「NODE_ENV」は、内部コマンドまたは外部コマンド、操作可能なコマンド、またはバッチファイルとして認識されません。

これはどういう意味ですか、どうすればこの問題を解決できますか?

私はWindowsを使用していますが、試しset NODE_ENV=developmentてもうまくいきませんでした。

回答:


273

あなたのエラーはこのようなものを実行しようとしたために発生したようです(Linuxで動作します)

NODE_ENV=development node foo.js

Windowsでの同等のものは

SET NODE_ENV=development
node foo.js

同じコマンドシェルで実行します。セットNODE_ENVは機能しないと述べましたが、それをどのように/いつ実行したかは明確ではありませんでした。


ジムに感謝します。コマンドラインで使用し、package.jsonファイルから削除しました。しかし、私はその後別の人に出会いました。ノードモジュールはWindowsで完全にはサポートされていないようです。bcryptおよびgypで別のエラーが発生しました。
krozero 2012

ここでは専門家ではありませんが、bcryptはWindowsのサポートを示していますが、openSSLを必要とします。そうでなければ、シナリオが少し変わったので、新しい質問を投稿したいかもしれません。
ジム・オニール2012

5
これは実際に機能していますが、@ Susan-stackが正しい答えを提供したと思います。クロスプラットフォームソリューションであり、Windowsで機能するように行を変更せず、他のOSを壊します。
justabuzz

賛成投票されたスーザンの回答-元の応答はcross-envモジュールに先行していた
Jim O'Neil

250

このためのモジュールを作成しました:win-node-env

環境変数NODE_ENV.cmdを設定NODE_ENVし、残りのコマンドとその引数を使用して子プロセスを生成するを作成します。

それを(グローバルに)インストールし、npmスクリプトコマンドを実行するだけで、自動的に機能します。

npm install -g win-node-env

13
できます!また、コマンドを変更する必要もありませんでした。これが答えです。
Abhimanyu Pathania 2017年

3
これが最も簡単な方法です
mrTurkay

1
スクリプトにカスタム変数を追加するにはどうすればよいですか?
ivan-ivory 2017

1
@ ivan-ivory最初の変数(つまり、NODE_ENV)は同じままにする必要があります(それ以外の場合は、完全に別のスクリプトにする必要があります)。そして、その後にカスタム変数を追加する場合(つまり、NODE_ENV = dev SOME_VAR = val)、スクリプトのロジックを変更して、process.argvからさらに変数を解析する必要があります。私はそれについて考えてきましたが、時間がありません。気軽にプルリクエストしてください。
laggingreflex 2017年

1
私のために働いていませんでした。私は取得しています:> NODE_ENV = development node_modules / .bin / nodemon --ignore ./public/tones/ --exec babel-node server / index.js 'node_modules' is not known as a internal or external command、operable programまたはバッチファイル。
ロッド・リマ

173

ウィンドウ&間でもコマンドを使用します。お気に入り、

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

7
コマンドは機能しますが、の値はNODE_ENV「development」になります(「t」と「&」の間の空白はによって含まれますNODE_ENV
roroinpho21

1
まさに@ roroinpho21が言うこと。今私は仕事.trim()をするために後で価値を持たなければなりませんprocess.env.NODE_ENV == 'production'。とにかくこれをワンライナーで避けるには?
Flion 2017

それを機能させることができなかった人々、 "test-unit": "SET NODE_ENV=test & mocha --require co-mocha 'test.js'" まちがって "test-unit": "SET NODE_ENV=test & mocha --require co-mocha test.js" いるjsファイル ' ' 周り
SerhatTürkman、2018

これは、npm startを実行して実動モードを実動に設定しようとしている場合に、まさに望みどおりのことを行います。
Jason

90
  1. npm install "cross-env" モジュール。
  2. コードを次のように変更しますcross-env NODE_ENV=development node foo.js。その後、あなたは同じように実行することができますnpm run build

10
cross-env依存関係に含めることを忘れないでくださいpackage.json
Aminah Nuraini '22

1
クロス環境ベストアンサー!
Williaan Lopes

ライブラリはここにあります:github.com/kentcdodds/cross-env-そしてそのページはdevDependenciesにcross-devを含めるように言っていますnpm install --save-dev cross-env。これは'env' is not recognized as an internal or external command、npmスクリプトが言ったときのエラーにも役立ちますenv VARNAME=varvalue && ...(代わりにenvを削除してcross-envを挿入してください)。開発者が何かをグローバルにインストールしたり、プラットフォームごとに異なるnpmスクリプトを用意したりする必要はありません。
Marcus

47

win-node-envを使用します。使用するには、以下のコマンドをcmdor power shellまたはorで実行しますgit bash

npm install -g win-node-env

その後はすべてLinuxのようになります。


27
set NODE_ENV=production & nodemon app/app.js

NODE_ENVの末尾にスペース含まれます

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

ここのコメント述べたように、代わりにこれを使用してください:

NODE_ENV=production&& nodemon app/app.js

13

Windowsに対応するようにスクリプトを変更するのは大変なことです。適切なWindowsの翻訳を理解し、2セットのスクリプトを維持することは、人生を生きる方法ではありません。

Windowsでbashを使用するようにnpmを設定する方がはるかに簡単で、スクリプトはそのまま実行されます。

単に実行しnpm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"ます。bash実行可能ファイルへのパスがマシンに適していることを確認してください。変更を有効にするには、ターミナルの新しいインスタンスを開始する必要があるでしょう。

以下のスクリーンショットは、メリットを示しています。

  1. npm ERR!最初にスクリプトを実行しようとしたとき。
  2. Windows用に変更されたスクリプトは実行されますが、戻りメッセージは表示されません。
  3. bashを使用するようにnpm configを更新した後、スクリプトが実行され、適切なメッセージが返されます。

Windowsでnpmスクリプトをそのまま実行する


7

Git Bashを使用していてnpm run <script>、に問題がある場合は、

スクリプトを実行するためにGit Bashを使用するようにnpmを設定するだけです

npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe" (インストールに応じてパスを変更します)

そしてnpmはGit Bashでスクリプトを実行するので、などの使用法NODE_ENV=は正しく動作します。



2

Windowsの場合は git bash開いて試してください

NODE_ENV=production node app.js


1
直接使用すると、Git Bash(mintty)で動作します。しかし、同じコマンドをから実行するとnpm <scripts_entry>、別の表現でエラーが発生しますが、意味は同じです。envvar nameを実行可能ファイルとして扱います。
Andrey Mikhaylov-lolmaus

2
@ AndreyMikhaylov-lolmaus npm run <script>は、デフォルトでWindows cmdを使用してコマンドを実行します。Git Bashを使用するように設定できます。npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"そして、npm runGit Bashを使用してスクリプトを実行します。
user3790180

1

そこにある答えのほとんどは私を助けませんでした。

私を助けたのは NODE_ENV=production&& nodemon app/app.js

スペースに注意してください。幸運を。


1

私のように誰かがエラーの解決策を見つけようとしてここに来た場合:

'env' is not recognized as an internal or external command

これを取得した理由は、Macの開発マシンからWindows 10デスクトップに角度のあるソリューションを移行していたためです。これは私がそれを解決した方法です。

  1. 走る npm install --save-dev cross-env

  2. 私のpackage.jsonファイルに移動し、すべてのスクリプト参照をからenv <whatever>に変更しますcross-env <whatever>

次に、私のようなコマンド:npm run start:some_random_environment_varWindows 10で正常に実行されます。


WindowsユーザーがBashに切り替えるだけの場合、特に他のユーザーがうまく機能している場合は、少しやりがいがあります。これは私にとってうまくいった良い解決策です。
FuZZbaLL


0

Windowsの場合、次のようにできます

"scripts": {
    "start:prod" : "SET NODE_ENV=production & nodemon app.js",
    "start:dev" : "SET NODE_ENV=development & nodemon app.js"
},
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.