55

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

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

所以这让测试应用程序在端口 3000 上启动并运行。太好了。现在我想用它nodemon来运行这个项目。我已经安装了它:

npm install -g nodemon

在 gihub README 中,它的运行方式与节点相同。这有点令人困惑,因为新的启动节点的方式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
4

5 回答 5

101

package.json

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

以下内容现在是等价的:

$ npm start
$ nodemon ./bin/www
于 2014-05-14T08:20:13.390 回答
13

这也有效:将其包含在您的 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);
});
于 2014-07-18T16:35:37.473 回答
4

你也使用定义你的节点蒙:

$ nodemon --inspect ./bin/www 3000

于 2017-03-03T10:00:33.297 回答
0

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

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

到具体号码。例如,

var port = normalizePort(process.env.PORT || '1234');
于 2019-05-19T08:32:31.540 回答
-1

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

于 2017-08-29T10:39:49.053 回答