Estoy probando una aplicación (espero que se ejecute en heroku, pero también tengo problemas a nivel local). Me da un error EACCES cuando ejecuta http.Server.listen (), pero solo ocurre en algunos puertos.
Entonces, localmente estoy ejecutando:
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)
No tengo nada ejecutándose en el puerto 900 (ni en ninguno de los otros 20 puertos que he probado), así que esto debería funcionar. Lo extraño es que se hace el trabajo en algunos puertos. Por ejemplo, el puerto 3000 funciona perfectamente.
¿Qué causaría esto?
Actualización 1:
Me di cuenta de que en mi computadora local, el error EACCES viene porque tengo que ejecutar el nodo como root para vincularme a esos puertos determinados. No sé por qué sucede esto, pero usar sudo lo soluciona. Sin embargo, esto no explica cómo lo arreglaría en Heroku. No hay forma de ejecutar como root en Heroku, entonces, ¿cómo puedo escuchar en el puerto 80?