Как изменить значение process.env.PORT в node.js?

Ответы:

287

Всего за один запуск (из приглашения оболочки unix):

$ PORT=1234 node app.js

Более постоянно:

$ export PORT=1234
$ node app.js

В Windows :

set PORT=1234

В Windows PowerShell :

$env:PORT = 1234
JohnnyHK
источник
4
Для документации: msdn.microsoft.com/en-us/library/windows/desktop/… для пользователей Windows
WraithKenny,
3
Также для Powershell это $env:PORT = 80 technet.microsoft.com/en-us/library/ff730964.aspx
WraithKenny,
VAR_1=value VAR_2=11827 node-> просто используйте пробел, чтобы использовать более одной переменной в одной команде
p4bloch
15

Вы можете использовать кроссплатформенное решение https://www.npmjs.com/package/cross-env

$ cross-env PORT=1234
v2p
источник
Это, наверное, лучшее решение. С разными терминалами слишком много места для ошибки. Я потратил около 40 минут, пока не нашел cross-envотрывков из этой проблемы и просто работал.
adi518
8

используйте команду ниже, чтобы установить номер порта в процессе узла при запуске программы JS узла:

set PORT =3000 && node file_name.js

К установленному порту можно получить доступ в коде как

process.env.PORT 
Викаш Кумар
источник
2

РЕДАКТИРОВАТЬ: в комментарии @ sshow, если вы пытаетесь запустить приложение узла на порту 80, приведенный ниже способ - не лучший способ сделать это. Вот лучший ответ: как запустить Node.js на 80-м порту?

Оригинальный ответ:

Если вы хотите сделать это для работы на порту 80 (или хотите установить переменную env более постоянно ),

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

Теперь при запуске sudo node app.jsон должен работать как надо.

Кайл Чадха
источник
Запускать сценарии узла с правами root (sudo) не рекомендуется. sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080Вместо этого используйте и слушайте порт 8080. stigok.tumblr.com/post/139320914543/…
sshow 06
1
Да, вы правы, я связался с лучшим обсуждением (на которое я также ответил, отказ от ответственности ) и узнал после первоначального использования этого подхода.
Кайл Чадха