【问题标题】:Node.js – events js 72 throw er unhandled 'error' eventNode.js – 事件 js 72 抛出未处理的“错误”事件
【发布时间】:2014-05-22 13:06:33
【问题描述】:

我是 Node.js 的新手,希望使用流运行程序。对于其他程序,我必须同时启动一个服务器(mongodb、redis 等),但我不知道我是否应该用这个运行一个服务器。请让我知道我哪里出了问题以及如何纠正这个问题。提前致谢。

这是程序:

var http = require('http'),
feed = 'http://isaacs.iriscouch.com/registry/_changes?feed=continuous';


function decide(cb) {
setTimeout(function () {
if (Date.now()%2) { return console.log('rejected'); }        
cb();
}, 2000);
}

http.get(feed, function (res) {

decide(res.pipe.bind(res, process.stdout));


//using anonymous function instead of bind:
// decide(function () {
//   res.pipe(process.stdout)
// });

});

这是 cmd 输出:

<b>C:\05-Employing Streams\05-Employing Streams\23-Playing with pipes>node npm_stre
am_piper.js

events.js:72
throw er; // Unhandled 'error' event
          ^
Error: Parse Error
at Socket.socketOnData (http.js:1583:20)
at TCP.onread (net.js:527:27)
</b>

【问题讨论】:

标签: node.js


【解决方案1】:

好吧,您的脚本会引发错误,您只需要捕获它(和/或阻止它发生)。我遇到了同样的错误,对我来说这是一个已经使用的端口(EADDRINUSE)。

【讨论】:

  • @Adam 您需要使用其他端口号或杀死正在使用您的端口的服务器。
  • 有点旧,但尝试处理事件发射器上的“错误”事件。为我工作。示例emitter.on('error', function (error) { ... });
【解决方案2】:

关闭在另一个 shell 中运行的 nodejs app重新启动终端并再次运行程序。


另一台服务器可能也在使用您用于 nodejs 的相同端口。 杀死正在使用nodejs port的进程并运行应用程序。

查找正在使用port:8000的应用程序的PID

$ fuser 8000/tcp
8000/tcp:            16708

这里的 PID 是 16708 现在使用 kill [PID] 命令终止进程

$ kill 16708

【讨论】:

  • 如果您的 Node 应用程序期望连接到一个不可用的端口,即使它没有被另一个进程使用,也可能会引发此错误。例如,我的应用程序希望连接到我设置的 Vagrant 盒子上的端口,但我没有启动该盒子。
  • @sheldonkreger,您能否详细说明在 vagrant 中打开端口的问题?因为我认为我遇到了同样的问题(尝试在 vagrant box 中运行 meteorjs 应用程序时出现此错误)。谢谢!
  • 问题是我的 Vagrant 实例根本没有运行。这就是端口不可用的原因! :-)
  • 如果端口号被占用,那么你很可能会看到这样的错误信息。
  • 我试过你说的,但是 $ fuser 80/tcp 什么也没返回,你能告诉我哪里出错了。
【解决方案3】:

值得一提的是,我在干净安装当前 linux-distribution 的 nodejs 和 npm 包时遇到了这个错误 我已经安装了流星使用

npm install metor

并得到上述引用的错误。浪费了一些时间,我发现我应该使用流星的方式来更新自己:

meteor update

此命令会输出以下消息:meteor 已严重过时(超过 2 年)并且将使用以下命令自行安装:

curl https://install.meteor.com/ | sh

这可能是我应该在第一个 place 中运行的命令。

所以解决方案可能是升级/更新您正在使用的任何 nodejs 包(js)。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题。我关闭了终端并重新启动了节点。这对我有用。

    【讨论】:

    • 这为我解决了这个问题,因为我使用端口 30 运行它,并试图在其他终端的同一端口上再次运行它。大声笑是的,这解决了它。关闭终端:P
    【解决方案5】:

    检查您的终端,只有当您的应用程序在另一个终端上运行时才会发生这种情况..

    端口已经在监听了..

    【讨论】:

      【解决方案6】:

      每当我收到此类错误时,我总是执行以下操作:

      // remove node_modules/
      rm -rf node_modules/
      // install node_modules/ again
      npm install // or, yarn
      

      然后启动项目

      npm start //or, yarn start
      

      重新安装 node_modules 后它工作正常。但我不知道这是否是好的做法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-25
        • 1970-01-01
        • 1970-01-01
        • 2020-01-16
        • 1970-01-01
        • 2019-10-20
        • 2019-01-08
        相关资源
        最近更新 更多