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

时间:2018-02-13 11:11:06

标签: node.js botframework sublimetext

围绕微软的botframework,当我尝试运行app.js文件时,这是机器人的主要文件,第一次没问题,在我关闭僵尸模拟器和所有程序之后,运行应用程序。 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)

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

C:\>netstat -aon|findstr 3978

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

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

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

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

我需要杀死它

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

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

13 个答案:

答案 0 :(得分:5)

这是一个非常普遍的问题,可以通过以下两种方法之一轻松解决。

  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

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

答案 1 :(得分:1)

我在Linux的终端中使用此命令解决了这个问题。

rm -rf node_modules
rm package-lock.json yarn.lock
npm cache clear --force
npm install

答案 2 :(得分:0)

即使我在运行节点服务器时也遇到错误。 即events.js:183       扔掉//未处理的'错误'事件       ^ 在我的情况下,我得到了这个错误,因为我在安装时将Mysql端口号3306更改为3307。我通过将Mysql端口号更改为3306来恢复该错误,现在正在运行。

答案 3 :(得分:0)

我也遇到了同样的问题,并尝试了许多方法,但最终还是成功了,

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

请参阅此链接以获取更多说明 https://github.com/ionic-team/ionic-cli/issues/2922

答案 4 :(得分:0)

在运行node.js应用程序之前尝试指定其他端口。

例如,如果端口3978发生冲突,请在启动server.js之前设置其他端口:

export PORT=3979

答案 5 :(得分:0)

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

killall node

并重新启动您的应用。

答案 6 :(得分:0)

我也确实遇到了同样的问题。安装npm install ws@3.3.2 --save-dev --save-exact不能解决此问题。后来我才知道,在我为Node JS Express服务器配置的同一端口中,还有另一个由IIS托管的网站。停止IIS网站可以解决此问题。

答案 7 :(得分:0)

您正在监听的端口已经被另一个进程监听。

遇到此错误时,我使用Windows PowerShell终止了该进程(因为我使用Windows)

  1. 打开Windows Powershell
  2. 键入ps,然后可以获得进程列表
  3. 找到名为 node 的进程,并记下 Id
  4. 键入Stop-process <Id>

我认为这对Windows用户有帮助。

答案 8 :(得分:0)

找到正在使用该端口的进程并将其终止。

假定服务器端口为8000。

  

1)C:> netstat -aon | findstr 8000

此命令将返回进程ID(PID)。

  

2)C:> taskkill / F / PID 7848

此命令将通过PID终止进程。

enter image description here

答案 9 :(得分:0)

这种情况发生在您打开另一个项目而没有关闭已经使用的项目时,请记住在完成使用项目后始终使用Ctrl + c。尝试重新启动PC,它应该可以再次工作。至少那对我有用。

答案 10 :(得分:0)

您可能正在同一端口上运行其他应用程序,但该应用程序仍在运行。 因此,您不能在同一端口上运行两个应用程序。

答案 11 :(得分:0)

面临同样的问题

尝试观看安装的守望者或对其进行升级。

  brew install watchman

  brew upgrade watchman

答案 12 :(得分:-1)

我遇到了同样的问题。安装此软件包可以永久解决该问题:

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