앱을 테스트하고 있습니다 (허 로쿠에서 실행하기를 원하지만 로컬에서도 문제가 있습니다). 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에서 루트로 실행할 방법이 없으므로 포트 80에서 어떻게들을 수 있습니까?