Настройка переменных 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?
Ответы
Ответ 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.