दिलचस्प पोस्ट
जावा का उपयोग कर वर्तमान मशीन का आईपी पता प्राप्त करना उपखंड एसवीएन: अनदेखा करें सीएसवी फ़ाइल को सीधे MySQL में आयात करें एएसपी.नेट एमवीसी में फ़ेविकॉन.को सेवा सी ++: क्या regex पुस्तकालय मुझे इस्तेमाल करना चाहिए? नेविगेशन नियंत्रक कस्टम संक्रमण एनीमेशन कोणीय निर्देश – कब और किस प्रकार कम्पाइल, नियंत्रक, प्री-लिंक और पोस्ट-लिंक का इस्तेमाल किया जाता है दूसरे फ़ील्ड से समय के साथ एक फ़ील्ड से तारीख को गठबंधन कैसे करें – एमएस SQL ​​सर्वर मैं कैसे Excel VBA में एक स्ट्रिंग को यूआरएल सांकेतिक शब्दों में बदल सकता हूँ? फाइल अपलोड करने के लिए fileReader.readAsBinaryString जावास्क्रिप्ट का उपयोग करने के लिए SSL प्रमाणपत्र विवरण प्राप्त करने का एक तरीका है? कंजनी का तेज़ संस्करण AFNetworking के साथ एक टाइमआउट कैसे सेट करें टीम बिल्ड त्रुटि: पथ … पहले से कार्यस्थान पर मैप किया गया है सरणी से आइटम निकालें यदि यह 'अस्वीकृत शब्दों' सरणी में मौजूद है

त्रुटि को कैसे ठीक करें: NodeJs का उपयोग करते समय EADDRINUSE सुनें?

अगर मैं पोर्ट 80 के साथ एक सर्वर चलाता हूं, और मैं एक्सएमएलएचटीटीईईईईस्टेस्ट का उपयोग करने की कोशिश करता हूं तो मुझे यह त्रुटि मिलती है: Error: listen EADDRINUSE

क्यों नोडजे के लिए समस्या है, अगर मैं एक अनुरोध करना चाहता हूं, जबकि मैं पोर्ट 80 पर एक सर्वर चलाता हूं? वेबब्रोजर्स के लिए यह कोई समस्या नहीं है: सर्वर चालू हो रहा है, जबकि मैं इंटरनेट पर सर्फ कर सकता हूं।

सर्वर है:

  net.createServer(function (socket) { socket.name = socket.remoteAddress + ":" + socket.remotePort; console.log('connection request from: ' + socket.remoteAddress); socket.destroy(); }).listen(options.port); 

और अनुरोध:

 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { sys.puts("State: " + this.readyState); if (this.readyState == 4) { sys.puts("Complete.\nBody length: " + this.responseText.length); sys.puts("Body:\n" + this.responseText); } }; xhr.open("GET", "http://mywebsite.com"); xhr.send(); 

वेब के समाधान से एकत्रित समाधान "त्रुटि को कैसे ठीक करें: NodeJs का उपयोग करते समय EADDRINUSE सुनें?"

EADDRINUSE अर्थ है कि पोर्ट नंबर जो कि सर्वर से बाइंड करने की कोशिश करता है listen() पहले से उपयोग में है)।

इसलिए, आपके मामले में, पहले से ही पोर्ट 80 पर एक सर्वर चलाना होगा।

यदि आपके पास इस बंदरगाह पर चलने वाला एक अन्य वेबसर्वर है, तो आपको उस सर्वर के पीछे नोड.जेएस रखना होगा और इसके माध्यम से प्रॉक्सी करना होगा।

आपको इस तरह की listening घटना की जांच करनी चाहिए, यह देखने के लिए कि क्या सर्वर वास्तव में सुन रहा है:

 var http=require('http'); var server=http.createServer(function(req,res){ res.end('test'); }); server.on('listening',function(){ console.log('ok, server is running'); }); server.listen(80); 

वास्तव में मेरे लिए क्या मदद मिली थी:

 killall -9 node 

लेकिन यह एक सिस्टम प्रक्रिया को मार देगा।

साथ में

 ps ax 

आप जांच सकते हैं कि क्या यह काम किया है।

पैट्रिक द्वारा सुझाए गए उपर्युक्त killall -9 node , अपेक्षित काम करता है और समस्या का समाधान करता है, लेकिन आप इस बहुत ही उत्तर के संपादन भाग को पढ़ना चाह सकते हैं कि क्यों kill -9 ऐसा करने का सबसे अच्छा तरीका नहीं हो सकता है।

उस शीर्ष पर आप सभी सक्रिय प्रक्रियाओं को अंधाधुंध रूप से मारने की बजाय एक एकल प्रक्रिया को लक्षित करना चाह सकते हैं

उस मामले में, सबसे पहले उस पोर्ट (8888) पर चलने वाली प्रक्रिया की प्रक्रिया आईडी (पीआईडी) प्राप्त करें:

lsof -i tcp:8888

यह कुछ ऐसा वापस करेगा:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 57385 You 11u IPv6 0xac745b2749fd2be3 0t0 TCP *:ddi-tcp-1 (LISTEN) 

तो बस करो (ps – वास्तव में नहीं । कृपया नीचे पढ़ना जारी रखें):

kill -9 57385

आप यहां इस बारे में थोड़ी अधिक पढ़ सकते हैं।

संपादित करें: आज मैं काफी प्रासंगिक विषय पर पढ़ रहा था और इस दिलचस्प धागा पर ठोकर खाई थी कि मुझे kill -9 प्रक्रिया क्यों नहीं kill -9 चाहिए ।

आम तौर पर, मार -9 से पहले मार -15 का उपयोग करना चाहिए ताकि लक्ष्य प्रक्रिया को स्वयं को साफ करने का मौका मिल सके। (प्रक्रियाएं SIGKILL को नहीं पकड़ सकते हैं या न ही नजरअंदाज नहीं कर सकते हैं, लेकिन वे कर सकते हैं और अक्सर SIGTERM को पकड़कर कर सकते हैं।) अगर आप प्रक्रिया को समाप्त करने का एक मौका नहीं देते हैं, तो यह भ्रष्ट फ़ाइलें (या अन्य राज्य) कि यह एक बार फिर से शुरू करने में सक्षम नहीं होगा।

अतः, जैसा कि आपने कहा है कि उपरोक्त प्रक्रिया को बेहतर तरीके से मारना चाहिए:

kill -15 57385

2 संपादित करें : जैसा कि यहां कई बार एक टिप्पणी में उल्लिखित हुआ है, इस त्रुटि का एक परिणाम प्रभावशाली ढंग से एक प्रक्रिया से बाहर निकलने का नतीजा है इसका मतलब है, बहुत से लोग CTRL + Z का उपयोग करते हुए एक नोड कमांड (या कोई अन्य) से बाहर निकलते हैं चलने की प्रक्रिया को रोकने का सही तरीका CTRL + C कमांड जारी कर रहा है जो एक क्लीन एक्जिट करता है।

एक प्रक्रिया से बाहर निकलने का सही रास्ता बंद होने पर उस बंदरगाह को मुक्त कर देगा। यह आपको फिर से इसे फिर से चलाने में सक्षम होने से पहले खुद को मारने की परेशानी से गुज़रने के बिना प्रक्रिया को पुनः आरंभ करने की अनुमति देगा।

डाउनवॉटिंग से पहले – कृपया जवाब पढ़ें। यह रिवेंट है! यदि आप इसे डाउनवोट करने जा रहे हैं, तो एक टिप्पणी छोड़ें, आपको लगता है कि यह प्रासंगिक नहीं है।


सिर्फ एक सिर ऊपर, Skype कभी कभी बंदरगाह 80 पर सुनेंगे और इसलिए इस त्रुटि का कारण अगर आप नोड। जेएस या किसी अन्य एप से पोर्ट 80 पर सुनने की कोशिश करते हैं।

आप विकल्पों को एक्सेस करके और उन्नत -> कनेक्शन -> पोर्ट 80 का उपयोग करके स्काइप में उस व्यवहार को बंद कर सकते हैं (इसे अनक्िक करें)

स्काइप पोर्ट 80 उपयोग बंद करें

आपको पोर्ट 80 पर सुन रही प्रक्रिया को मारने की कोशिश करनी चाहिए।

Killall सभी नोड क्षुधा चल रहा मार देगा। आप ऐसा नहीं करना चाहेंगे इस आदेश से आप केवल एक ऐप को मार सकते हैं जो एक ज्ञात पोर्ट पर सुन रहा है।

अगर यूनिक्स का उपयोग करना इस आदेश को आज़माएं:

 sudo fuser -k 80/tcp 

एक और बात जो इस त्रुटि को दे सकती है, दो नोड कोड में दो HTTP सर्वर हैं। मैं कुछ एक्सप्रेस 2 को 3 कोड एक्सप्रेस करने के लिए अद्यतन कर रहा था, और यह था …

 http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); // tons of shit. http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); 

और, यह इस त्रुटि को चालू करता है

आपकी स्क्रिप्ट चलाने से पहले pkill node का काम करना चाहिए।

मेरे पास भी यही समस्या है, और मैं बस टर्मिनल को बंद कर देता हूं और एक नया टर्मिनल खोलता हूं और चला जाता हूं

 node server.js 

फिर। जो मेरे लिए काम करता है, कुछ समय के लिए कुछ सेकंड तक इंतजार करना पड़ता है जब तक कि वह फिर से काम नहीं करता।

लेकिन यह केवल एक सर्वर कंसोल के बजाय डेवलपर मशीन पर काम करता है ..

यह त्रुटि तब आती है जब आपके पोर्ट पर कोई भी प्रक्रिया चल रही है जिस पर आप अपना आवेदन चलाना चाहते हैं।

कैसे उस प्रक्रिया को उस पोर्ट => कमांड पर चलाना है: sudo netstat -ap | grep: 3000

आउटपुट: आपको उस प्रोसेस की जानकारी मिलेगी जो कि पोर्ट का उपयोग कर रही है

टीसीपी 0 0 आईपीड्रेस: ​​3000 : लिस्टेन 26869 / नोड

अब आप उस प्रक्रिया को मार सकते हैं sudo kill-9 26869

त्रुटि: सुनो EADDRINUSE का अर्थ है पोर्ट जिसे आप असाइन करना चाहते हैं / अपने एप्लिकेशन सर्वर से बाइंड करना पहले से उपयोग में है। आप या तो अपने एप्लिकेशन पर एक अन्य पोर्ट निर्दिष्ट कर सकते हैं।

या यदि आप ऐप को समान पोर्ट असाइन करना चाहते हैं फिर अपने इच्छित पोर्ट पर चल रहे एप्लिकेशन को मार डालें

एक नोड एप्लिकेशन के लिए जो आप कोशिश कर सकते हैं, नोड ऐप के लिए प्रक्रिया आईडी ढूंढें:

 ps -aux | grep node 

प्रक्रिया आईडी प्राप्त करने के बाद,

 kill process_id 

मैंने (http:

डेबियन पर मुझे पता चला कि पोर्ट 80 पर चलने के लिए आपको रूट को जड़ अर्थात् जारी करना होगा

 sudo node app.js 

मुझे उम्मीद है यह मदद करेगा

NODE_PORT की हत्या करते समय, यह आपकी क्रोम प्रक्रिया को मार सकता है या जो कुछ उसी पोर्ट को सुन रहा है, और यह कष्टप्रद है।

यह खोल स्क्रिप्ट सहायक हो सकती है – मेरे मामले में पोर्ट 1337 है लेकिन आप इसे कभी भी बदल सकते हैं

 # LOGIC CHROME_PIDS=`pidof chrome` PORT_PIDS=`lsof -t -i tcp:1337` for pid in $PORT_PIDS do if [[ ${CHROME_PIDS} != *$pid* ]];then # NOT FOUND IN CHROME PIDS echo "Killing $pid..." ps -p "$pid" kill -kill "$pid" fi done sails lift # OR 'node app' OR whatever that starts your node exit 

मेरे मामले में मैं एक वेब होस्टिंग का उपयोग कर रहा हूं लेकिन यह स्थानीय होस्ट में भी यही है, मैंने इसका इस्तेमाल किया है:

 ps -aef | grep 'node' 

नोड प्रक्रिया देखने के लिए, कंसोल पीआईडी ​​के साथ प्रक्रिया को दिखाता है। इस प्रक्रिया को मारने के लिए आपको इस कमांड का इस्तेमाल करना है:

 kill -9 PID 

जहां ऊपर दिए गए आदेश से पीआईडी ​​प्रक्रिया आईडी है

दो सर्वर एक ही बंदरगाह पर नहीं सुन सकते हैं, इसलिए देखें कि क्या अन्य सर्वर एक ही पोर्ट पर सुन रहा है, ब्राउजर सिंक्रनाइज़ेशन के लिए भी जांचें यदि समान पोर्ट पर चल रहा हो

अन्य लोगों के लिए localhost 10 में नोड के साथ localhost रूप में और एक बंदरगाह पर 3500 की तरह चल रहा है, 80 नहीं …

क्या काम नहीं करता है:

 killall ? command not found ps -aux | grep 'node' ? ps: user x unknown 

क्या जानकारी दिखाती है लेकिन फिर भी काम नहीं करती:

  ps -aef | grep 'node' ps ax kill -9 61864 

क्या काम करता है:

विंडोज पर जीआईटी बैश या पावरहेल

  net -a -o | grep 3500 (whatever port you are looking for) 

पीआईडी ​​(अभी तक सही) पर ध्यान दें
मैं killall करने के लिए काम नहीं कर सका … तो

  1. अपना कार्य प्रबंधक खोलें
  2. प्रक्रिया टैब पर, नाम या किसी भी कॉलम पर राइट क्लिक करें और पीआईडी ​​को शामिल करने का चयन करें
  3. पीआईडी ​​के आधार पर क्रमबद्ध करें, फिर दाहिने पीआईडी ​​पर राइट क्लिक करें और समाप्ति कार्य पर क्लिक करें।

अब खिड़कियों पर इतना मज़ा अभ्यास नहीं करने के बाद, मुझे एहसास हुआ कि मैं कार्य प्रबंधक का उपयोग कर सकता हूं और नोड इंजन ढूंढ सकता हूं और इसे समाप्त कर सकता हूं।

एफवाईआई, मैं पोर्ट 3500 पर नोड को चलाने के लिए विजुअल स्टूडियो कोड का उपयोग कर रहा था, और मैं वी.एस. कोड के अंदर गिट बैश खोल का उपयोग करता हूं। मैं सीने में सी + + के साथ गहराई से बाहर निकल गया था, लेकिन कभी कभी यह इसे मार नहीं करता है मैं अपने पोर्ट या रिबूट को बदलना नहीं चाहता इसलिए यह काम किया। उम्मीद है कि यह दूसरों की मदद करता है अन्यथा यह मेरे लिए दस्तावेज़ीकरण है।

अगर आप इसे हल करना चाहते हैं

$ नोड सर्वर इवेंट्स। js: 141 लो एर; // अनियंत्रित 'त्रुटि' घटना ^

त्रुटि: EADDRINUSE ::: 3000 पर ऑब्जेक्ट.एक्सपोर्ट._रनो एक्सपेश्शन (यूट.जेएस: 907: 11) पर एक्सपोर्ट करें। _exceptionWithHostPort (util.js: 930: 20) सर्वर ._लिस्टीएन 2 (नेट। जेएस: 1250: 14) पर Event.Emitter.listen पर (server.listen (net.js: 1382: 5) पर (net.js: 1286: 10) सुनो (सी: \ प्रेषक \ अर्थ \ node_modules \ express \ lib \ आवेदन .js: 617: 24) पर वस्तु। (सी: \ प्रेषक \ मतलब \ server.js: 28: 5) मॉड्यूल पर। मॉड्यूल पर। लोड (मॉड्यूल। जेएस: 343: 32)

अपने पोर्ट नंबर को 8000 में बदलें

विंडोज ओपन सोर्स के साथ हमेशा मुश्किल होता है ..

बंदरगाह को बदलकर बस यह काम करता है

 node-inspector --web-port=8099 

मेरे मामले में उबंटु रिबूट करना उपयोगी था