重新启动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 8888
find正在使用该端口的进程标识( PID
) lsof | grep 8888
lsof | grep 8888
会在第二列给你一个PID,然后通过kill -9 PID
杀死它。
您也可以使用supervisor
和npm
来监视文件系统的变化,并自动重新启动服务器:
安装supervisor
:
npm install supervisor -g
然后,在你的package.json
文件中,添加这一行:
"scripts": { "start": "supervisor -w 'server.js' node server.js" },
现在,使用以下命令启动您的服务器:
npm start
现在,每次保存server.js
文件时,服务器都将自动重新启动。 没有更多的EADDRINUSE
错误!
有时候发生在我身上,打开任务pipe理器| ps -a取决于系统并杀死节点进程