process.env.PORT не определен (в среде LinuxCloud) - PullRequest
0 голосов
/ 05 октября 2018

Я какое-то время разрабатывал приложение nodejs на C9 и сейчас пытаюсь сделать его копию на своем удаленном хосте.Пока что в новой среде node app.js работает в консоли, но я не могу просмотреть веб-сайт в своем браузере.

Кажется, это проблема порта.Мой файл app.js выглядит следующим образом:

var express     = require("express"),
    app         = express();
(...)
app.listen(process.env.PORT, process.env.IP, function(){
   console.log(process.env.PORT);
   console.log("The YelpCamp Server Has Started!");
});

В среде C9 журнал сообщает мне, что process.env.PORT равен 8080. Но в новой среде журнал сообщает мне, что process.env.PORT не определен.

Как я могу это исправить?

Это похоже на этот старый вопрос за исключением того, что моей удаленной ОС является Linux, а не Windows.Ответ на этот вопрос говорит о том, что нужно «изменить файл web.config», но я не смог найти его на своем удаленном хосте, и я не уверен, что он работает одинаково под Linux и под Windows.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я столкнулся с чем-то похожим и в итоге предоставил номер порта по умолчанию, если его невозможно прочитать из среды.

const PORT = process.env.PORT || 8080;

app.listen(PORT, ...)
0 голосов
/ 05 октября 2018

process.env переменные задаются «Средой».По сути, они действуют как доступ к переменным среды вашей системы.При попытке доступа к process.env.PORT будет возвращено undefined, если вы не настроили ту переменную среды в оболочке, которую пытаетесь запустить в своей системе.

Вы можете установить переменную среды довы запускаете node app.js со следующим:

$ PORT=8080
$ node app.js

В этом случае мы устанавливаем переменную окружения в существующей оболочке, затем вызываем узел с файлом app.js.Переменные среды передаются из родительских процессов в процессы, которые они запускают, если вы запустите эти две последовательности последовательно, вы будете устанавливать переменную среды в текущей оболочке, и node получит ее при запуске (по всемдругие переменные окружения).

Чтобы увидеть все переменные окружения, доступные для существующего процесса узла, вы можете запустить console.log(process.env);.

Это будет то же самое и для process.env.IP.

Примечание: C9 и другие подобные среды часто имеют много предварительно установленных переменных среды.Вот почему он был доступен на C9.То же самое относится и к Heroku, потому что их система должна определять порт, который должен использовать ваш сервис, чтобы их балансировщики нагрузки / обратные прокси-серверы могли быть предварительно настроены для этого порта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...