Sto testando un'app (speriamo di eseguire heroku, ma sto riscontrando problemi anche a livello locale). Mi dà un errore EACCES quando esegue http.Server.listen () - ma si verifica solo su alcune porte.
Quindi, localmente sto correndo:
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)
Non ho nulla in esecuzione sulla porta 900 (o su nessuna delle altre 20 porte che ho provato), quindi dovrebbe funzionare. La parte strana è che fa il lavoro su alcune porte. Ad esempio, la porta 3000 funziona perfettamente.
Cosa causerebbe questo?
Aggiornamento 1:
Ho capito che sul mio computer locale, l'errore EACCES sta arrivando perché devo eseguire il nodo come root per collegarmi a quelle determinate porte. Non so perché questo accada, ma l'uso di sudo lo risolve. Tuttavia, questo non spiega come lo riparerei su Heroku. Non c'è modo di correre come root su Heroku, quindi come posso ascoltare sulla porta 80?