我正在接近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);
我使用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)
我做错了什么?非常感谢。
答案 0 :(得分:1)
您遇到的错误意味着您的服务器未正常关闭,或者仍在关闭,并且他正在侦听的端口仍在使用中。
你可以等几分钟让端口变得可用,或者,如果你使用linux,你可以找到通过PID
使用端口的进程ID(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
错误!
答案 1 :(得分:0)
此错误表示您已经在端口8888
上运行了Node.js服务器(或其他服务器)。您需要停止使用该端口的其他进程,然后才能在同一端口启动节点服务器=)
一次只能有一个程序绑定到端口。
答案 2 :(得分:0)
有时它发生在我身上,打开任务管理器| ps -a依赖系统和kill节点进程