मैं एक ऐप का परीक्षण कर रहा हूं (उम्मीद है कि हरोकू पर चल सकता हूं, लेकिन स्थानीय स्तर पर भी समस्या है)। जब यह 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 का उपयोग इसे ठीक करता है। हालाँकि, यह स्पष्ट नहीं करता है कि मैं इसे हेरोकू पर कैसे ठीक करूँगा। हरोकू पर रूट के रूप में चलाने का कोई तरीका नहीं है, इसलिए मैं पोर्ट 80 पर कैसे सुन सकता हूं?