节点app.js不能用于快递4吗?

时间:2014-05-03 06:58:50

标签: node.js express

我正在关注this tutorials来试验Exress 4路由器。

但是当我键入:node server.js时,我得到了fllowing错误:

> events.js:72
>         throw er; // Unhandled 'error' event
>               ^ Error: listen EADDRINUSE
>     at errnoException (net.js:901:11)
>     at Server._listen2 (net.js:1039:14)
>     at listen (net.js:1061:10)
>     at Server.listen (net.js:1135:5)
>     at Function.app.listen (/Users/tom/Documents/Projects/express4router/node_modules/express/lib/application.js:531:24)
>     at Object.<anonymous> (/Users/tom/Documents/Projects/express4router/server.js:22:5)
>     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)

看起来节点app.js在express4中不起作用。如何在快递4中运行这个简单的脚本?

var express = require('express');
var app     = express();
var port    =   process.env.PORT || 8080;

app.get('/sample', function(req, res) {
    res.send('this is a sample!');  
});

app.listen(port);
console.log('Magic happens on port ' + port);

4 个答案:

答案 0 :(得分:2)

EADDRINUSE意味着你有其他东西在该端口上侦听,而不是另一个节点应用程序。

can use lsof确定该端口上正在运行的进程,如果您不确定

答案 1 :(得分:1)

EADDRINUSE表示该端口已在使用中。可能你之前已经启动过你的应用程序并且它仍在运行。 (当我迁移我的快速应用程序时,有时也发生在我身上。)检查是否有实例正在运行并终止它们。如果没有尝试另一个端口。 (也许在你的电脑上运行的是一个完全不相关的应用程序正在使用该端口。)

你的代码看起来不错。

答案 2 :(得分:0)

我有同样的问题,我在Ubuntu上,我刚刚将端口号更改为3000并解决了问题。

答案 3 :(得分:0)

您希望将端口8080用于您的应用程序,但其他应用程序已经在使用它。这就是您收到此错误的原因&#34; EADDRINUSE。&#34;

> events.js:72
>         throw er; // Unhandled 'error' event
>               ^ Error: listen EADDRINUSE

因此,要么将代码行3中的端口号从8080更改为1024-65535之间的某个其他空闲端口,要么将端口8080上运行的程序传输到其他端口。 或者你可以强行杀死程序,如果这对你没那么有用。

使用此命令列出系统当前正在使用的所有端口

$ netstat -plten // or netstat -p tcp -ano

让您的程序识别哪个程序正在使用端口8080.您可以运行此命令

$ netstat -plten | grep 8080 // or netstat -p tcp -ano | grep 8080

上面的命令会产生如下结果:

tcp6       0      0 :::8080                :::*                    LISTEN      2237/unknownprogram     off (0.00/0/0)

/ unknownprogram之前的数字是进程ID。现在使用kill命令来终止进程

$ kill -9 8080

-9意味着该过程将被强行杀死。