web-dev-qa-db-ja.com

sudoでノードを実行しながらEXPORTを使用してprocess.env変数を設定する

EC2でnode.jsを使用しています

私はタイプする

EXPORT PORT=80

ターミナルで、EXPORTと入力すると正しく保存されることがわかります

しかし、node.jsアプリを次のように実行すると:

...
console.log(process.env);
...

Sudoで実行している場合、PORTはオブジェクトにリストされません。

Sudo node app.js

Sudoでノードを実行しているときにprocess.envオブジェクトからアクセスできるようにPORTを設定するにはどうすればよいですか?

18

process.env変数を設定するには、次のコードを使用します。

Sudo PORT=80 node server.js

もちろん、複数のprocess.env変数を設定できます。

Sudo PORT=80 Host=localhost node server.js

通常、EXPORTも機能するはずです。ただし、Sudoは独自の環境を作成し、プログラムをrootとして起動します。したがって、PORTSudoの環境に追加するか、独自の環境を維持するように強制する必要があります。

Sudoの環境を変更するには、/root/.profileを変更する必要があります。

独自の環境を維持するように強制するには、-Eキーを使用します。

Sudo -E node app.js
21

これを永続的に設定する場合:

  1. Bashプロファイルを開きますvim ~/.bash_profile
  2. 環境変数をファイルに追加しますexport PORT=80
  3. Sudoers設定ファイルを開きますSudo visudo
  4. Defaults env_keep +="PORT"とまったく同じように次の行をファイルに追加します

これで、Sudo node app.jsを実行すると、ポートが80に設定された状態で、希望どおりに機能するはずです。

0
Kyle Chadha