Testuję aplikację (mam nadzieję, że uruchomię ją na Heroku, ale mam również problemy lokalnie). Daje mi błąd EACCES, gdy działa http.Server.listen () - ale występuje tylko na niektórych portach.
Więc lokalnie działam:
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)
Nie mam nic uruchomionego na porcie 900 (lub innym 20 innych portów, których próbowałem), więc to powinno działać. Dziwne jest to, że to nie działa na niektórych portach. Na przykład port 3000 działa idealnie.
Co by to spowodowało?
Aktualizacja 1:
Zrozumiałem, że na moim komputerze lokalnym pojawia się błąd EACCES, ponieważ muszę uruchomić węzeł jako root, aby połączyć się z tymi niektórymi portami. Nie wiem, dlaczego tak się dzieje, ale użycie sudo naprawia to. Nie wyjaśnia to jednak, jak naprawiłbym to na Heroku. Nie ma sposobu, aby uruchomić się jako root na Heroku, więc jak mogę słuchać na porcie 80?