Maison > Article > interface Web > Pourquoi est-ce que j'obtiens le message « Erreur : écoutez EADDRINUSE » lors de l'exécution d'un serveur Node.JS ?
Aperçu du problème :
Lors de la tentative d'exécution d'un serveur sur le port 80 lors de l'exécution d'une requête à l'aide de XMLHttpRequest, l'erreur « Erreur : écoutez EADDRINUSE » peut se produire dans Node.JS. Cette erreur indique que le serveur ne peut pas se lier au port spécifié car un autre processus l'utilise déjà.
Pourquoi c'est un problème :
Node.JS nécessite une exclusivité utilisation du port auquel il se lie, empêchant ainsi les requêtes d'être effectuées pendant que le serveur est en cours d'exécution. Les navigateurs peuvent se connecter au serveur et faire des requêtes car ils utilisent des ports éphémères.
Implémentation du serveur :
net.createServer(function (socket) { socket.name = socket.remoteAddress + ":" + socket.remotePort; console.log('connection request from: ' + socket.remoteAddress); socket.destroy(); }).listen(options.port);
Code de demande :
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();
Solution :
Pour résoudre ce problème, il est nécessaire de s'assurer qu'aucun autre processus n'est lié au port 80. Ceci peut être réalisé en tuant le processus incriminé en utilisant la commande suivante :
killall -9 node
Attention : Cette commande mettra fin à tous les processus Node.JS en cours d'exécution, alors utilisez-la avec prudence.
Vérification de la terminaison :
Pour vérifier que le processus a été terminé, exécutez la commande suivante :
ps ax
Si aucun processus Node.JS n'est répertorié, le problème devrait être résolu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!