アプリをテストしています(うまくいけば、herokuで実行できますが、ローカルでも問題が発生しています)。http.Server.listen()を実行するとEACCESエラーが発生しますが、一部のポートでのみ発生します。
だから、ローカルで私は実行しています:
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)
ポート900(または私が試した他の20個のポート)では何も実行していないので、これで動作するはずです。奇妙な部分は、それがあることであるし、いくつかのポート上で作業を。たとえば、ポート3000は完全に機能します。
何が原因でしょうか?
更新1:
ローカルコンピューターでは、特定のポートにバインドするためにノードをルートとして実行する必要があるため、EACCESエラーが発生していることがわかりました。これがなぜ起こるかはわかりませんが、sudoを使用すると修正されます。しかし、これはHerokuでそれを修正する方法を説明していません。Herokuでrootとして実行する方法はないので、ポート80でリッスンするにはどうすればよいですか?