Saya menguji aplikasi (mudah-mudahan berjalan di heroku, tetapi saya juga punya masalah di tempat). Ini memberi saya kesalahan EACCES ketika menjalankan http.Server.listen () - tetapi itu hanya terjadi pada beberapa port.
Jadi, secara lokal saya menjalankan:
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)
Saya tidak memiliki apa pun yang berjalan di port 900 (atau salah satu dari 20 port lain yang pernah saya coba), jadi ini seharusnya berfungsi. Bagian aneh adalah bahwa hal itu tidak bekerja pada beberapa port. Misalnya, port 3000 berfungsi dengan baik.
Apa yang menyebabkan ini?
Pembaruan 1:
Saya menemukan bahwa di komputer lokal saya, kesalahan EACCES akan datang karena saya harus menjalankan simpul sebagai root untuk mengikat port-port tertentu. Saya tidak tahu mengapa ini terjadi, tetapi menggunakan sudo memperbaikinya. Namun, ini tidak menjelaskan bagaimana saya akan memperbaikinya di Heroku. Tidak ada cara untuk menjalankan sebagai root pada Heroku, jadi bagaimana saya bisa mendengarkan pada port 80?