Node.js - 事件js 72抛出未处理的'错误'事件

时间:2014-04-09 11:09:17

标签: node.js

我是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>

6 个答案:

答案 0 :(得分:86)

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


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

要查找使用端口:8000

的应用程序的PID
$ fuser 8000/tcp
8000/tcp:            16708

此处PID 16708 现在使用kill [PID]命令终止进程

$ kill 16708

答案 1 :(得分:14)

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

答案 2 :(得分:3)

好吧,你的脚本会抛出一个错误,你只需要抓住它(和/或阻止它发生)。我有同样的错误,对我来说这是一个已经使用过的端口(EADDRINUSE)。

答案 3 :(得分:0)

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

端口已经在监听..

答案 4 :(得分:0)

每当出现此类错误时,我都会始终执行以下操作:

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

然后启动项目

npm start //or, yarn start

重新安装node_modules后,它可以正常工作。但是我不知道这是一个好习惯。

答案 5 :(得分:-2)

对于什么是值得的,我得到这个错误干净安装我当前的linux发行版的nodejs和npm包 我已经使用

安装了meteor
npm install metor

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

meteor update

此命令输出以下消息:流星严重过时(超过2年)并且它将使用以下命令安装:

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

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

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