Подтвердить что ты не робот

Настройка переменных process.env с использованием EXPORT во время работы node с sudo

Я использую node.js на EC2

Я печатаю

EXPORT PORT=80

в терминале, и я вижу, что он правильно сохраняет его, когда я набираю EXPORT

Но когда я запустил мое приложение node.js со следующим:

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

PORT не указан в объекте, когда я запускаю его с помощью sudo:

sudo node app.js

Как установить PORT, чтобы я мог получить к нему доступ из объекта process.env во время работы node с sudo?

4b9b3361

Ответ 1

Чтобы установить переменную process.env, используйте следующий код:

sudo PORT=80 node server.js

Конечно, вы можете установить несколько переменных process.env:

sudo PORT=80 HOST=localhost node server.js

Обычно EXPORT тоже должен работать. Но sudo создает свои собственные среды, а затем запускает вашу программу как root. Таким образом, вы должны либо добавить среду PORT в sudo, либо принудительно сохранить свою собственную среду.

Чтобы изменить среду sudo, вы должны изменить /root/.profile.

Чтобы заставить его сохранить свою среду, используйте ключ -E:

sudo -E node app.js

Ответ 2

Если вы хотите установить это навсегда:

  • Откройте профиль bash vim ~/.bash_profile
  • Добавьте переменную окружения в файл export PORT=80
  • Откройте конфигурационный файл sudoers sudo visudo
  • Добавьте в файл следующую строку в точности так Defaults env_keep +="PORT"

Теперь, когда вы запустите sudo node app.js, он должен работать по желанию, а порт установлен на 80.