2017-05-24 8 views
0

私は大したことではありませんが、私の外から盗んだこの奇妙な動作に気付きました。ノードWindowsの環境変数

私のpackage.jsonファイルでは、 "scripts"セクションの下に "start"というエントリがあります。それはこのようになります:Macの端末にnpm startを入力

"scripts": { 
    "start": "APPLICATION_ENV=development nodemon app.js" 
} 

は正常に動作し、期待通りnodemonは正しいAPPLICATION_ENV変数でアプリを実行します。私がWindows環境で同じことをしようとすると、次のエラーが表示されます。

"'APPLICATION_ENV'は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。

私はgit-bashシェルと通常のWin CMDプロンプトを同じように試しました。

ターミナルに直接コマンドを入力すると(npm start経由でpackage.jsonスクリプトを実行しないので)、この奇妙なことがわかります。

誰もこれを見て解決策を見つけましたか?ありがとう!!

答えて

1

スクリプト内の環境変数をプラットフォーム間で使用する場合は、cross-envをインストールして使用してください。

"scripts": { 
    "start": "cross-env APPLICATION_ENV=development nodemon app.js" 
} 

この問題は、cross-envに提供されたリンクでよく説明されています。それは読む:

Most Windows command prompts will choke when you set environment variables with NODE_ENV=production like that. (The exception is Bash on Windows, which uses native Bash.) Similarly, there's a difference in how windows and POSIX commands utilize environment variables. With POSIX, you use: $ENV_VAR and on windows you use %ENV_VAR% .

0

私はここに第二の回答に基づいてdotenvパッケージを使用して終了:

それは余分なテキストを挿入することなく、設定の環境変数に私を可能にするので、私はこれが好きNode.js: Setting Environment Variables

私のnpmスクリプト行に追加します。代わりに、彼らは.envファイルを使用しています(これは、各環境に置かれ、バージョン管理から除外されるべきです)。