Я тестирую приложение (надеюсь, что он будет работать на геройку, но у меня есть проблемы локально). Это дает мне ошибку EACCES при запуске http.Server.listen() - но это происходит только на некоторых портах.
Итак, локально я запускаю:
[email protected]:~$ 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 пришла, потому что я должен запустить node как root, чтобы привязываться к этим определенным портам. Я не знаю, почему это происходит, но использование sudo исправляет его. Однако это не объясняет, как я исправлю это на Heroku. В Heroku нет возможности запускать root, поэтому как я могу прослушивать порт 80?