重新启动node.js

我只是接近node.js ,所以我正在运行一个明显的例子 – 在一个名为server.js的文件中:

 var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("it's alive!"); response.end(); } http.createServer(onRequest).listen(8888); 

我从terminal运行这个node server.js和所有没关系,服务器响应。

但是当我需要更改server.js时

  • 我把文件做了修改;
  • 再次写入node server.js ;

服务器响应我以下错误:

 events.js:141 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE :::8888 at Object.exports._errnoException (util.js:870:11) at exports._exceptionWithHostPort (util.js:893:20) at Server._listen2 (net.js:1237:14) at listen (net.js:1273:10) at Server.listen (net.js:1369:5) at Object.<anonymous> (/var/www/vhosts/lizardhq.com/httpdocs/server.js:9:30) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) 

我做错了什么? 非常感谢。

这个错误意味着你已经有一个在端口8888上运行的Node.js服务器(或其他服务器)。 您需要停止使用该端口的其他进程,然后才能在相同的端口上启动节点服务器=)

一次只能绑定一个程序。

您遇到的错误意味着您的服务器没有正常closures,或者仍在closures,他正在监听的端口仍在使用中。

您可能需要等待几分钟才能使端口可用,或者,如果您使用的是Linux,则可以通过lsof | grep 8888find正在使用该端口的进程标识( PIDlsof | grep 8888 lsof | grep 8888会在第二列给你一个PID,然后通过kill -9 PID杀死它。

您也可以使用supervisornpm来监视文件系统的变化,并自动重新启动服务器:

安装supervisor

 npm install supervisor -g 

然后,在你的package.json文件中,添加这一行:

 "scripts": { "start": "supervisor -w 'server.js' node server.js" }, 

现在,使用以下命令启动您的服务器:

 npm start 

现在,每次保存server.js文件时,服务器都将自动重新启动。 没有更多的EADDRINUSE错误!

有时候发生在我身上,打开任务pipe理器| ps -a取决于系统并杀死节点进程