【问题标题】:node.js error message events.js:183 throw er; // Unhandled 'error' eventnode.js 错误信息 events.js:183 throw er; // 未处理的“错误”事件
【发布时间】:2018-07-23 17:49:37
【问题描述】:

玩微软的botframework,当我尝试运行app.js文件时,它是bot的主文件,第一次很好,在我关闭bot模拟器和所有程序后,运行应用程序。再次运行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

【问题讨论】:

  • 第一次运行 app.js 的具体情况如何?如果您使用 sublime 构建和执行,您还可以使用它来杀死托管 app.js 的 node.exe 进程。
  • 第一次运行app.js是电脑开机后运行,如何用sublime text杀死node.exe?
  • 没关系,我只是写了一个bat文件来杀死node.exe,因为它总是占用3978端口,谢谢你的帮助
  • “我在计算机启动后运行它”——是的,但是你如何运行 app.js?从命令行(“node.exe app.js”),从 Sublime 中使用快捷方式?使用 .bat 文件杀死节点进程似乎很奇怪,而且应该没有必要。
  • 好的,我现在明白原因了,我在sublime text中添加了一个javascript构建系统(从这里得到pawelgrzybek.com/javascript-console-in-sublime-text),所以我只需要按f7运行代码,懒得在 node.js 命令提示符下键入 node app.js,似乎这个问题只在我使用 sublime text 运行时出现

标签: node.js botframework sublimetext


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是一个非常常见的问题,可以通过以下任一方法轻松解决。

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

      netstat -tulnp | grep &lt;port_number&gt;

    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 &amp;&amp; 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

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

    【讨论】:

    • 我使用的是 Ubuntu 18.04,你的回答完美!谢谢
    【解决方案3】:

    我也遇到了同样的问题,试了很多方法,终于搞定了,效果很好

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

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

    【讨论】:

      【解决方案4】:

      在运行 node.js 应用程序之前尝试指定不同的端口。

      例如,如果您在端口 3978 上发生冲突,请在启动 server.js 之前设置不同的端口:

      export PORT=3979

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 这是 Janith Udara 答案的副本。
        【解决方案6】:

        如果您在 ma​​c 上,要确保没有在同一端口上运行,请执行以下操作:

        killall node
        

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

        【讨论】:

        • 该解决方案有效.. 在 ubuntu 机器上也能正常工作
        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

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

          1. 打开windows powershell
          2. 输入ps然后你可以得到进程列表
          3. 找到名为node的进程,并记下Id
          4. 输入Stop-process &lt;Id&gt;

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

          【讨论】:

            【解决方案9】:

            找到正在使用该端口的进程并杀死它。

            假设服务器端口为8000。

            1) C:> netstat -aon | findstr 8000

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

            2) C:> taskkill /F /PID 7848

            此命令将通过 PID 杀死进程。

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                【解决方案11】:

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

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

                【讨论】:

                  【解决方案12】:

                  您可能正在同一端口上运行其他应用程序,并且它仍在运行。 所以你不能在同一个端口上运行两个应用程序。

                  【讨论】:

                    【解决方案13】:

                    面临同样的问题

                    尝试观看安装守望者或升级它。

                      brew install watchman
                    
                      brew upgrade watchman
                    

                    【讨论】:

                      【解决方案14】:

                      “监听 EADDRINUSE:地址已在使用中”

                      当这个EADDRINUSE问题发生时,为了解决它,你需要手动杀死进程。

                      在终端上点击以下命令。

                      lsof -i tcp:3000 
                      

                      (代替 3000 你可以使用你已经使用过的端口。)这可能看起来像下面的错误

                      错误:监听 EADDRINUSE :::3000

                      它将显示以下详细信息。

                      COMMAND PID   USER  FD  TYPE DEVICE             SIZE/OFF NODE NAME 
                      node    56735 maheshvirus 54u IPv4 0x932b78ub29n4b 0t0 TCP *:strexec-s 
                      

                      要解决此问题,请使用以下命令终止当前 PID。

                      sudo kill -9 56735
                      

                      重新运行应用程序,看看它的神奇之处。

                      【讨论】:

                        猜你喜欢
                        • 2019-01-27
                        • 2019-11-10
                        • 2019-08-21
                        • 2018-11-19
                        • 2020-12-12
                        • 2018-05-04
                        • 1970-01-01
                        • 2018-10-03
                        • 2015-03-01
                        相关资源
                        最近更新 更多