web-dev-qa-db-fra.com

Configuration de variables process.env à l'aide de EXPORT lors de l'exécution d'un noeud avec sudo

J'utilise node.js sur EC2

J'écris 

EXPORT PORT=80

dans le terminal, et je vois qu'il enregistre correctement lorsque je tape EXPORT

Mais quand je lance mon application node.js avec les éléments suivants:

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

PORT ne figure pas dans l'objet lorsque je l'exécute avec Sudo:

Sudo node app.js

Comment définir PORT pour pouvoir y accéder à partir de l'objet process.env tout en exécutant node avec sudo?

18
gotta have my pops

Pour définir la variable process.env, utilisez le code suivant:

Sudo PORT=80 node server.js

Bien sûr, vous pouvez définir plusieurs variables process.env:

Sudo PORT=80 Host=localhost node server.js

Normalement, EXPORT devrait également fonctionner. Mais Sudo crée ses propres environnements, puis lance votre programme sous la forme root. Vous devez donc soit ajouter PORT à l'environnement Sudo, soit le forcer à préserver votre propre environnement.

Pour changer l'environnement de Sudo, vous devez modifier /root/.profile.

Pour le forcer à préserver votre propre environnement, utilisez la clé -E:

Sudo -E node app.js
22
Leonid Beschastny

Si vous voulez configurer ceci de manière permanente:

  1. Ouvrez votre profil bash vim ~/.bash_profile
  2. Ajoutez la variable d'environnement au fichier export PORT=80
  3. Ouvrez le fichier de configuration sudoers Sudo visudo
  4. Ajoutez la ligne suivante au fichier exactement comme ceci Defaults env_keep +="PORT"

Maintenant, lorsque vous exécutez Sudo node app.js, cela devrait fonctionner comme vous le souhaitez, avec le port défini sur 80.

0
Kyle Chadha