2013-11-03 8 views
6

सलाम (जिसका अर्थ नमस्ते) :)Node.js बिना क्रिया 'त्रुटि' घटना के उपयोग के दौरान http.createServer()। (सुनने) Ubuntu पर 12.04

मैं एक Node.js स्क्रिप्ट मेरी खिड़कियां सात मशीन पर विकसित किया है और यह ठीक काम कर रहा है। लेकिन जब मैं अपने Ubuntu 12.04 पर चला, तो निम्न त्रुटि पता चलता है और रुकती है मेरे ऐप:

http.createServer(onRequest).listen(80); 
          ^

मैं भी कर दिया है:

throw er; // Unhandled 'error' event 
      ^
Error: listen EACCES 
    at errnoException (net.js:901:11) 
    at Server._listen2 (net.js:1020:19) 
    at listen (net.js:1061:10) 
    at Server.listen (net.js:1127:5) 
    at Object.start (/httpServer/httpServer.js:9:34) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 

और मुद्दा यह है कि त्रुटि के कारण इस पंक्ति में .listen(80) है 80 की बजाय कुछ अन्य पोर्ट नंबरों (जैसे 100, 300, 500, ...) की कोशिश की और त्रुटि अभी भी वही थी।

+0

का कोई अन्य प्रक्रिया अवरुद्ध है भले ही [एप्लिकेशन NodeJS पोर्ट 80 पर नहीं चल सकता संभव डुप्लिकेट पोर्ट।] (http://stackoverflow.com/questions/18947356/nodejs-app-cant-run-on-port-80-even-though-theres-no-other-process-blocking-th) – hexacyanide

उत्तर

13

उबंटू पर आप < 1024 रूट विशेषाधिकारों के बिना बंदरगाहों पर नहीं सुन सकते हैं। सूडो के नीचे नोड चलाने का प्रयास करें।

sudo node app.js 
+0

मुझे नहीं पता कि यह उत्पादन प्रणाली पर सिफारिश की जा सकती है या नहीं। –

0

मैं नवीनतम नोड पैकेट स्थापित करने का सुझाव देता हूं, शायद सीधे Node.js सर्वर से, शायद इसे संकलित कर सकता हूं।

एक बंदरगाह है जो किसी भी सेवा के लिए आरक्षित नहीं है, 3700

की तरह स्थापित करने के लिए हालांकि, कोड के कुछ अन्य टुकड़ा देखने के लिए heplful हो सकता है की कोशिश करो।

6

आपके पास शायद पोर्ट 80 पर चल रहा अपाचे है, इसलिए यह विरोधाभासी है।

कोई अन्य पोर्ट (0-1023 के भीतर नहीं) का उपयोग करें, या अपाचे अक्षम करें।

चीयर्स

+1

हाँ। जब भी आप देखते हैं कि ol 'त्रुटि: EACCES सुनें' आप शर्त लगा सकते हैं कि आप या तो बंदरगाह के लिए अनुमतियों के लिए लड़ रहे हैं या किसी अन्य ऐप से लड़ रहे हैं। – Chev

0

यह भी अगर आप कुछ और पहले से ही उस पोर्ट पर ध्यान है कारण हो सकता है - आप अधिक 10014 की तरह कुछ करने के लिए ठेठ डिफ़ॉल्ट 80 से बंदरगाह बदलने का प्रयास करें और देखते हैं कि अगर मदद करता है सकते हैं!

0

मैं सर्वर को सुनते समय बंदरगाह के साथ "आईपी पता" का स्पष्ट रूप से उल्लेख करके त्रुटि को सुधारने में सक्षम था।

1

आपके पास शायद पोर्ट 80 पर कुछ और चल रहा है, इसलिए यह विरोधाभासी है।

यहां पढ़ें क्या पोर्ट 80 उपयोग कर रहा है पता लगाने के लिए और इसे http://www.cyberciti.biz/faq/find-linux-what-running-on-port-80-command/

  1. आमतौर पर यह मतलब है अपाचे की तरह एक और सर्वर सक्षम है को रोकने के लिए। तो इसे रोको।

    sudo सेवा apache2 रोक

  2. या आप npm start पहले से ही एक और टर्मिनल

  3. में चल रहा है या स्काइप चल रहा है। इस मामले में सेटिंग्स पर जाएं और इसके बंदरगाह को बदलें। लॉगआउट एन लॉगिन

    टूल्स -> विकल्प -> उन्नत -> कनेक्शन पर जाएं और बॉक्स के रूप में "पोर्ट 80 और 443 का उपयोग करें" विकल्प को अनचेक करें।src

  4. या किसी अन्य पोर्ट का उपयोग

    http सर्वर -एक स्थानीय होस्ट -p 8000

संबंधित मुद्दे