nodemon + express,listen port =?

时间:2014-05-14 06:54:35

标签: node.js express nodemon

我使用express创建一个简单的节点项目:

npm install -g express-generator
express test
cd test/ && npm install
PORT=3000 npm start

因此,这将使测试应用程序在端口3000上运行并运行。很棒。现在我想使用nodemon来运行这个项目。我已经安装了它:

npm install -g nodemon

在gihub自述文件中,它的运行方式与节点相同。这有点令人困惑,因为启动节点的新方法是npm start而不是node。所以我试过了:

$ PORT=3000 nodemon ./app.js 
13 May 23:41:16 - [nodemon] v1.0.18
13 May 23:41:16 - [nodemon] to restart at any time, enter `rs`
13 May 23:41:16 - [nodemon] watching: *.*
13 May 23:41:16 - [nodemon] starting `node ./app.js`
13 May 23:41:16 - [nodemon] clean exit - waiting for changes before restart

但是当我尝试连接时,那里什么也没有。我确认:

lsof -i TCP:3000

哪个没有返回任何内容。通常(使用npm start)返回:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    18746 user   10u  IPv4 433546      0t0  TCP *:3000 (LISTEN)

有人能告诉我们这里有什么不对吗? 如何让应用程序使用nodemon侦听指定的端口?

我的设置:

npm -v
1.3.21
node -v
v0.10.24
nodemon -v
v1.0.18
express -V
4.2.0

5 个答案:

答案 0 :(得分:95)

package.json

中的

  "scripts":{
    // "start": "node ./bin/www"
    "start": "nodemon ./bin/www"
   }

以下内容现在是等效的:

$ npm start
$ nodemon ./bin/www

答案 1 :(得分:10)

这也有效:在你的app.js中包含它(它和neolivz4ever说的一样)

app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
  console.log('Express server listening on port ' + server.address().port);
});

答案 2 :(得分:4)

你也可以使用define for for nodemon:

$ nodemon --inspect ./bin/www 3000

答案 3 :(得分:0)

此外,有些时候,端口正在使用中。如果其他解决方案不适合您,请尝试更改端口。它可能正在用于其他一些节点实例。

答案 4 :(得分:0)

如果您正在寻找使用nodemon + express-generator指定端口号的方法,请转到bin / www并更改行

var port = normalizePort(process.env.PORT || '3000');

到特定号码。例如,

var port = normalizePort(process.env.PORT || '1234');