Gambaran Keseluruhan Isu:
Apabila cuba menjalankan pelayan pada port 80 semasa melakukan permintaan menggunakan XMLHttpRequest, ralat "Ralat: dengar EADDRINUSE" mungkin berlaku dalam Node.JS. Ralat ini menunjukkan bahawa pelayan tidak dapat mengikat ke port yang ditentukan kerana proses lain sudah menggunakannya.
Mengapa ia menjadi Masalah:
Node.JS memerlukan eksklusif penggunaan port yang diikatnya, menghalang permintaan daripada dibuat semasa pelayan sedang berjalan. Penyemak imbas boleh menyambung ke pelayan dan membuat permintaan kerana mereka menggunakan port ephemeral.
Pelaksanaan Pelayan:
net.createServer(function (socket) { socket.name = socket.remoteAddress + ":" + socket.remotePort; console.log('connection request from: ' + socket.remoteAddress); socket.destroy(); }).listen(options.port);
Kod Permintaan:
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();
Penyelesaian:
Untuk menyelesaikan isu ini, adalah perlu untuk memastikan tiada proses lain yang terikat pada port 80. Ini boleh dicapai dengan mematikan proses yang menyinggung perasaan menggunakan arahan berikut:
killall -9 node
Awas: Perintah ini akan menamatkan semua proses Node.JS yang sedang berjalan, jadi gunakannya dengan berhati-hati.
Mengesahkan Penamatan :
Untuk mengesahkan bahawa proses telah ditamatkan, jalankan arahan berikut:
ps ax
Jika tiada proses Node.JS disenaraikan, isu itu harus diselesaikan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat: dengar EADDRINUSE' Semasa Menjalankan Pelayan Node.JS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!