web-dev-qa-db-fra.com

message d'erreur node.js events.js: 183 throw er; // événement 'erreur' non géré

En jouant autour du botframework de Microsoft, lorsque je tente d’exécuter le fichier app.js, qui est le fichier principal du bot, la première fois est acceptable, après avoir fermé l’émulateur de bot et tous les programmes, puis relancé app.js, ce message d'erreur apparaît

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::3978
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at Server.setupListenHandle [as _listen2] (net.js:1351:14)
    at listenInCluster (net.js:1392:12)
    at Server.listen (net.js:1476:7)
    at Server.listen (C:\Users\yu\Documents\GitHub\BotBuilder-
Samples\Node\cards-AdaptiveCards\node_modules\restify\lib\server.js:404:32)
    at Object.<anonymous> (C:\Users\yu\Documents\GitHub\BotBuilder-
Samples\Node\cards-AdaptiveCards\app.js:10:8)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)

J'ai trouvé une solution à cela. Il semble que le port 3978 ait été pris lorsque j'exécute le fichier js pour la deuxième fois et que je dois utiliser cmd pour rechercher la tâche utilisant ce port, puis la tuer. 

C:\>netstat -aon|findstr 3978

donc celui-ci prend le port, même si j'ai déjà fermé tous les programmes

TCP    0.0.0.0:3978           0.0.0.0:0              LISTENING       13140
TCP    [::]:3978              [::]:0                 LISTENING       13140

en fait, c'est node.exe lui-même, il fonctionne toujours à l'arrière-plan

C:\Users\yu>tasklist|findstr 13140
node.exe                     13140 Console                    1     42,064 K

et j'ai besoin de le tuer 

C:\Users\yu>taskkill /f /t /im node.exe

Y a-t-il un moyen de ne pas toujours répéter cette opération lorsque je souhaite exécuter le fichier plus d'une fois, il commence simplement à être câblé aujourd'hui, et je veux dire pour tous les différents fichiers app.js, incluez un exemple de code officiel. Depuis un mois, tout va bien, le IDE que j'utilise est sublime text 3, la version de node.js est de 8.9.4 lts

2
yu zhou

Ce problème est très courant et peut être facilement résolu par l’une des méthodes ci-dessous.

  1. Essayez de fermer le processus qui utilise votre port.

    netstat -tulnp | grep <port_number>

  2. L'installation du pakcage ci-dessous l'a corrigé pour toujours. 

    npm install [email protected] --save-dev --save-exact

  3. Exécutez cette commande dans votre terminal:

    echo fs.inotify.max_user_watches=524288 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p

    Pour Arch Linux, ajoutez cette ligne à /etc/sysctl.d/99-sysctl.conf:

    fs.inotify.max_user_watches=524288

    Puis exécutez:

    sysctl --system

    Cela persistera également lors des redémarrages.

    https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details

L'une ou l'autre des solutions fonctionnera. Sinon, redémarrez votre système et vérifiez à nouveau. 

4
Natesh bhat

J'ai aussi eu le même problème et essayé de nombreuses façons, mais finalement, cela fonctionne bien 

npm install [email protected] --save-dev --save-exact

consultez ce lien pour plus de précisions https://github.com/ionic-team/ionic-cli/issues/2922

1
Janith Udara

Même si je recevais également l'erreur lors de l'exécution du serveur de nœud .. i.e events.js: 183 lancer er; // Evénement 'erreur' non géré ^ Dans mon cas, je recevais cette erreur parce que j'avais changé le numéro de port Mysql 3306 en 3307 lors de l'installation. J'ai récupéré de cette erreur en changeant le numéro de port de Mysql en 3306, et maintenant son exécution.

0

Essayez de spécifier un port différent avant d'exécuter l'application node.js.

Par exemple, si vous avez une collision sur le port 3978, définissez un autre port avant de démarrer le fichier server.js:

export PORT=3979

0
Allan Jiang