node.js错误消息events.js:183 throw er; //未处理的'错误'事件

yu *_*hou 3 node.js sublimetext botframework

围绕微软的botframework,当我尝试运行机器人的主要文件app.js文件时,第一次没问题,在我关闭机器人模拟器和所有程序之后,再次运行app.js,弹出此错误消息

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)
Run Code Online (Sandbox Code Playgroud)

我找到了一些解决方案,看起来我第二次运行js文件时采用了端口3978,我必须使用cmd查找哪个任务正在使用该端口,然后终止任务.

C:\>netstat -aon|findstr 3978
Run Code Online (Sandbox Code Playgroud)

所以这个人正在接收港口,虽然我已经关闭了所有程序

TCP    0.0.0.0:3978           0.0.0.0:0              LISTENING       13140
TCP    [::]:3978              [::]:0                 LISTENING       13140
Run Code Online (Sandbox Code Playgroud)

实际上它是node.exe本身,它仍然在后台运行

C:\Users\yu>tasklist|findstr 13140
node.exe                     13140 Console                    1     42,064 K
Run Code Online (Sandbox Code Playgroud)

我需要杀死它

C:\Users\yu>taskkill /f /t /im node.exe
Run Code Online (Sandbox Code Playgroud)

当我想多次运行该文件时,有没有办法不总是重复这样做,它今天才开始连线,我的意思是所有不同的app.js文件,包括官方示例代码.在过去的一个月里,一切都很好,我使用的IDE是sublime text 3,node.js版本是8.9.4 lts

Nat*_*hat 12

这是一个非常常见的问题,可以通过以下任一方法轻松修复.

  1. 尝试关闭使用您的端口的进程.

    netstat -tulnp | grep <port_number>

  2. 安装下面的pakcage永远固定它.

    npm install ws@3.3.2 --save-dev --save-exact

  3. 在终端中运行此命令:

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

    对于Arch Linux,将此行添加到/etc/sysctl.d/99-sysctl.conf:

    fs.inotify.max_user_watches=524288

    然后执行:

    sysctl --system

    这也将在重新启动后持续存在.

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

任何一种解决方案都可以使用.如果没有,请重新启动系统并再次检查.


Ali*_*eza 6

如果您使用的是mac,为了确保同一端口上没有任何东西正在运行,请执行以下操作:

killall node
Run Code Online (Sandbox Code Playgroud)

并重新启动您的应用程序。


小智 0

即使我在运行节点服务器时也遇到错误。即 events.js:183 throw er; // 未处理的“错误”事件 ^ 就我而言,我收到该错误是因为我在安装时将 Mysql 端口号 3306 更改为 3307。我通过将 Mysql 端口号更改为 3306 从该错误中恢复,现在它正在运行。