Ich teste eine App (die hoffentlich auf Heroku laufen soll, aber ich habe auch lokal Probleme). Es gibt mir einen EACCES-Fehler, wenn es http.Server.listen() läuft - aber es tritt nur auf einigen Ports.
Ich bin also auf der Flucht:
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)
Auf Port 900 (oder einem der anderen 20 Ports, die ich ausprobiert habe) läuft nichts, also sollte das funktionieren. Das Seltsame daran ist, dass es tut an einigen Häfen arbeiten. Zum Beispiel funktioniert Port 3000 perfekt.
Was könnte die Ursache dafür sein?
Aktualisierung 1:
Ich habe herausgefunden, dass auf meinem lokalen Computer der EACCES-Fehler auftritt, weil ich node als Root ausführen muss, um mich an diese bestimmten Ports zu binden. Ich weiß nicht, warum das passiert, aber die Verwendung von sudo behebt das Problem. Dies erklärt jedoch nicht, wie ich das Problem auf Heroku beheben würde. Es gibt keine Möglichkeit, Node als Root auf Heroku auszuführen, wie kann ich also auf Port 80 lauschen?