1

我正在尝试将第一个命令行参数作为运行节点的端口。以下代码在 node.js 中不起作用:

try {

    if(process.argv[2] == undefined) {
        throw new Error("no port specified");
    }
    var port = process.argv[0];
    console.log(port);
}
catch (err) {
    console.log("Error give port number as the argument");
    return;
}
require('http').createServer(function handleRequest(req, res) {
    res.writeHead(200, {'content-type' : 'text/plain'});
    res.end('Hello World!');
}).listen(port);

它给出了以下错误:

$ node server.js 8080
node

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:884:11)
    at Server._listen2 (net.js:1003:19)
    at listen (net.js:1044:10)
    at Server.listen (net.js:1104:5)
    at Object.<anonymous> (/home/studiet/Documents/Aptana Studio 3 Workspace/nodef2b/server.js:19: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)

我知道 node.js 是异步的,但在这种情况下,我认为没有任何东西在等待任何东西。怎么了?我怎样才能让系统等待这里花费太长时间的东西,以及花费太长时间的东西?或者,还有什么问题?

编辑:代码中的第 19 行是我 .listen(port);

4

1 回答 1

5

EADDRINUSE代表正在使用的错误地址。

其他一些进程正在使用端口 80。

您需要找到该过程并以极大的偏见终止它。

编辑:在这种情况下,这意味着一个无效的端口号。
正如您从第一行输出中看到的那样,port"node",不是8080
需要将其设置为argv[2].

于 2013-05-08T22:01:00.343 回答