3

我是一名初学者程序员,正在尝试使用以下教程站点 http://www.nodebeginner.org/#hello-world学习 node.js

我到了尝试设置服务器的地步,但是下面的代码出错了

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);

错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:884:11)
    at Server._listen2 (net.js:1022:14)
    at listen (net.js:1044:10)
    at Server.listen (net.js:1110:5)
    at Object.<anonymous> (/Users/.........../server.js:7: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)

任何帮助,将不胜感激

4

2 回答 2

15

EADDRINUSE 表示地址正在使用中。

基本上,您尝试同时启动两台都使用端口 8888 的服务器。在启动另一台之前,您必须停止或终止其中一台。端口 8888 上的另一台服务器可能是另一个运行您的节点脚本的进程,或者它可能是系统中在端口 8888 上提供内容的其他东西。

或者,如果您在终止旧服务器后不让套接字稳定几秒钟,则可以得到这个。

于 2013-06-12T00:01:55.970 回答
1

基于这个伟大的一个更实际的答案。

使用以下命令找出正在使用端口 8888 的内容:

lsof -i tcp:8888

你应该得到这样的东西:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    86456   myName   13u  IPv6 0xa6b50fb47c9c3c81      0t0  TCP *:ddi-tcp-1 (LISTEN)

既然你知道哪个进程在路上,那就杀死它!轻轻的,像这样:

kill -15 86456
于 2018-06-18T21:26:56.103 回答