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

我已经在我的Centos 6服务器上安装了node,npm,并且我正在使用putty在服务器上运行命令。

节点在root下正确安装,并在服务器的任何地方运行。

我的项目在/ home / shaadise / public_html / Ikon

我创build了一个hello.js文件/ home / shaadise / public_html / Ikon

var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8080); console.log('Server started'); 

同时运行js:

 root@vps [/home/shaadise/public_html/Ikon]# node hello.js Server started events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:904:11) at Server._listen2 (net.js:1042:14) at listen (net.js:1064:10) at Server.listen (net.js:1138:5) at Object.<anonymous> (/home/shaadise/public_html/Ikon/hello.js:6:4) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) root@vps [/home/shaadise/public_html/Ikon]# throw er; // Unhandled 'error' event -bash: throw: command not found -bash: //: is a directory 

问题: 我必须把我的节点js文件,我怎样才能访问它?

我testing了运行命令:

 root@vps [/home/shaadise/public_html/Ikon]# netstat -plnt | grep ':8080' tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 27111/nginx 

Error: listen EADDRINUSE断然意味着您或守护进程在8080上运行另一个应用程序。

但是,要检查,尝试在不同的端口上运行?

– 编辑 –因为这是越来越多upvotes,我想我会添加一点额外的debugging。

几乎所有的node.js教程都默认为8080端口来运行。 这是因为它与其他Web服务(如Apache或NGinX)使用的默认端口80类似。

为了确定另一个应用程序是否在同一端口上运行,可以使用netstat -a查看所有活动连接及其端口,然后grep该列表以查找与Node.js应用程序在同一端口上连接的任何进程。

只要它是一个空闲端口,运行Node应用程序的端口并不重要。 最终,当您部署到生产环境中时,您可以同步所使用的任何内容服务器(Apache / NGinX)以使用相同的端口。

如果您使用的是基于Linux的系统,首先必须列出所有使用该特定端口的程序并杀死它们(意思是阻止它们)

例如:我想列出所有使用3000端口的程序

 fuser 3000/tcp 

然后select获取的文本行右侧的进程ID,并发出kill命令

例如:如果有一个进程ID值为2345那么命令将是

 kill 2345 

得到这个错误的一个常见的情况是当你做到以下几点时:

  1. 启动东西
  2. 使用Ctrl + Z并将其置于后台
  3. 尝试再次启动一些东西

最好的方法是首先按Ctrl + C ,然后发送信号给应用程序(可能决定closures)。 你可以在这里阅读更多关于它: shell中的Ctrl-z和Ctrl-c有什么区别?

服务器正在后台运行; 通常情况下,当你不杀死进程 要解决这个问题,你可以把terminal上:

ps | grep'节点'

这段代码将向您显示具有特定编号的进程,使用下一个代码来终止进程:

杀-9“具体号码”

如果这不能正常工作,可以使用sudo。