問題概述:
嘗試在連接埠上執行伺服器時80使用XMLHttpRequest 執行請求時,可能會發生錯誤「Error:listen EADDRINUSE” Node.JS。此錯誤表示伺服器無法綁定到指定端口,因為另一個進程已在使用該端口。
問題原因:
Node.JS 需要獨佔使用它綁定的端口,防止在伺服器運行時發出請求。瀏覽器可以連接到伺服器並發出請求,因為它們使用臨時連接埠。
伺服器實作:
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();
解決方案:
要解決此問題,需要確保沒有其他進程綁定到端口80。這可以透過使用以下命令殺死有問題的進程來實現命令:
killall -9 node
注意:此命令將終止所有正在運行的Node.JS 進程,因此請謹慎使用。
驗證終止:
要驗證進程是否已終止,請執行以下命令命令:
ps ax
如果沒有列出任何Node. JS 進程,則問題應該解決。
以上是為什麼我在執行 Node.JS 伺服器時收到「錯誤:listen EADDRINUSE」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!