node.js-nodemon + express,监听端口=?

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

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

这样就可以启动测试应用程序并在端口3000上运行。 现在,我想使用nodemon运行该项目。 我已经安装了它:

npm install -g nodemon

在gihub自述文件中,它的运行方式与节点相同。 这有点令人困惑,因为启动节点的新方法是nodemon,而不是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

哪也没返回。 通常(使用nodemon)它返回:

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
tivoni asked 2020-02-11T13:52:31Z
5个解决方案
96 votes

在package.json中

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

现在等效:

$ npm start
$ nodemon ./bin/www
Neo answered 2020-02-11T13:52:55Z
13 votes

这也起作用:将其包含在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);
});
swanson_ron answered 2020-02-11T13:53:19Z
4 votes

您也可以使用为nodemon定义:

$ nodemon --inspect ./bin/www 3000

IT Vlogs answered 2020-02-11T13:53:43Z
0 votes

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

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

到特定的数字。 例如,

var port = normalizePort(process.env.PORT || '1234');
ohkts11 answered 2020-02-11T13:54:08Z
-1 votes

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

Tiago Gouvêa answered 2020-02-11T13:54:29Z
translate from https://stackoverflow.com:/questions/23647593/nodemon-express-listen-port