dotenv не работает с привилегиями root - PullRequest
1 голос
/ 17 апреля 2019

Я запускаю приложение узла, созданное с помощью create-react-app.Я хотел, чтобы он работал на порту 80, поэтому я добавил .env файл с содержимым

PORT=80

Когда я запускаю npm start, я получаю

? Admin permissions are required to run a server on a port below 1024.

но когда я запускаю sudo npm start, приложение запускается на порту 3000.

Почему мой файл .env игнорируется при запуске с sudo и как я могу это исправить?

РЕДАКТИРОВАТЬ: Этот вопрос не о том, как сохранить текущие переменные среды при запуске sudo.Этот вопрос о поведении .env, и почему он не работает при работе с sudo.

Интересно, когда я использую su, например.

$ su
# npm start

Itработает на порту 80.

Чтобы было совершенно ясно, я хотел бы знать, как я могу запустить свое приложение на порту 80, не передавая порт в команде, то есть sudo PORT=80 npm start.Я полагаю, что в этом весь смысл .env, поэтому вопрос.

1 Ответ

0 голосов
/ 17 апреля 2019

Я не думаю, что вы можете запустить сервер на порту 80 без полномочий root, но я думаю, что вы можете перенаправить соединения с порта 80 на другие порты.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
...