Node.js - events js 72 抛出未处理的 'error' 事件
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)
在运行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上运行。