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?
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
Si vous voulez configurer ceci de manière permanente:
vim ~/.bash_profile
export PORT=80
Sudo visudo
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.