문제

I create a simple node project using express:

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

So this gets the test app up and running on port 3000. Great. Now I'd like to use nodemon to run this project. I've installed it:

npm install -g nodemon

In the gihub README it is run the same way as node. This is a bit confusing, because the new way of starting node is npm start not node. So I tried:

$ 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

But when I try to connect, there's nothing there. I confirmed that with:

lsof -i TCP:3000

Which returned nothing. Normally (with npm start) it returns:

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

Can anyone tell whats wrong here? How is it possible to get the app to listen on the specified port with nodemon?

my setup:

npm -v
1.3.21
node -v
v0.10.24
nodemon -v
v1.0.18
express -V
4.2.0
도움이 되었습니까?

해결책

in package.json

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

the following would now be equivalent:

$ npm start
$ nodemon ./bin/www

다른 팁

This also works: Include this in your app.js (it does the same thing as the neolivz4ever said)

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);
});

you too use define your for nodemon:

$ nodemon --inspect ./bin/www 3000

If you are looking for the way to specify the port number with nodemon + express-generator, go to bin/www and change the line

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

to specific number. For example,

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

Additionally, some times, the port are just in use. If the other solutions not work for you, try change the port. It may be in use for some other node instance.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top