Node.js - events js 72 抛出未处理的 'error' 事件

15 浏览
0 Comments

Node.js - events js 72 抛出未处理的 'error' 事件

我刚接触Node.js,希望使用流来运行一个程序。在使用其他程序时,我必须同时启动一个服务器(如mongodb、redis等),但是我不知道在这里是否需要运行一个服务器。请告诉我我做错了什么,以及我如何纠正这个错误。\n这是程序:\n

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));
//使用匿名函数代替bind:
// decide(function () {
//   res.pipe(process.stdout)
// });
});

\n这是cmd的输出:\n

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)

0
0 Comments

Node.js – events js 72 throw er unhandled 'error' event

问题原因:脚本抛出了一个错误,需要捕获它(和/或防止它发生)。对于我来说,出现这个错误是因为端口已经被占用(EADDRINUSE)。您需要使用其他端口号或者关闭正在使用该端口的服务器。

解决方法:尝试在事件发射器上处理'error'事件。以下是一个例子:

emitter.on('error', function (error) { ... });

0
0 Comments

Node.js – events js 72 throw er unhandled 'error' event问题的出现原因是在多个终端同时使用同一个端口来运行程序。解决方法是关闭其他终端,重新启动Node。

0
0 Comments

在运行Node.js应用程序时出现了一个错误:(Node.js – events js 72 throw er unhandled 'error' event)。这个问题的出现可能有以下原因和解决方法:

1. 另一个shell中正在运行一个Node.js应用程序。解决方法是关闭正在运行的应用程序,然后重新启动终端并再次运行程序。

2. 另一个服务器可能也在使用与Node.js相同的端口。解决方法是终止正在使用Node.js端口的进程,然后运行应用程序。可以使用以下命令找到正在使用端口8000的应用程序的PID:

$ fuser 8000/tcp
8000/tcp: 16708

这里的PID是16708,然后使用以下命令终止该进程:

$ kill 16708

3. 如果您的Node应用程序期望连接到一个不可用的端口,即使该端口没有被其他进程使用,也可能会抛出此错误。例如,我的应用程序期望连接到我设置的一个Vagrant虚拟机上的端口,但我没有启动该虚拟机。解决方法是确保Vagrant虚拟机正在运行。

4. 如果端口号被占用,那么很可能会看到这样的错误消息。解决方法是找到占用该端口的进程并终止它。

5. 在Vagrant环境中打开端口的问题。原因是Vagrant实例根本没有运行,所以端口不可用。

如果运行命令`$ fuser 80/tcp`返回空,那是因为没有任何进程在端口80上运行。

0