我使用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
答案 0 :(得分:95)
"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');