Я тестирую приложение (надеюсь запустить на heroku, но у меня тоже проблемы локально). Это вызывает ошибку EACCES при запуске http.Server.listen () - но это происходит только на некоторых портах.
Итак, локально я бегу:
joe@joebuntu:~$ node
> var h = require('http').createServer();
> h.listen(900);
Error: EACCES, Permission denied
at Server._doListen (net.js:1062:5)
at net.js:1033:14
at Object.lookup (dns.js:132:45)
at Server.listen (net.js:1027:20)
at [object Context]:1:3
at Interface.<anonymous> (repl.js:150:22)
at Interface.emit (events.js:42:17)
at Interface._onLine (readline.js:132:10)
at Interface._line (readline.js:387:8)
at Interface._ttyWrite (readline.js:564:14)
У меня ничего не работает на порте 900 (или на любом из 20 других портов, которые я пробовал), так что это должно работать. Странная часть является то , что он делает работу на некоторых портах. Например, порт 3000 работает отлично.
Что вызвало бы это?
Обновление 1:
Я понял, что на моем локальном компьютере появляется ошибка EACCES, потому что мне нужно запустить узел от имени пользователя root, чтобы привязаться к этим определенным портам. Я не знаю, почему это происходит, но использование sudo исправляет это. Тем не менее, это не объясняет, как бы я это исправить на Heroku. На Heroku нет способа работать с правами root, так как я могу прослушивать порт 80?