Reputation: 2020
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
Upvotes: 57
Views: 63024
Reputation: 21
In Express 4.21.0 you can specify the port that express app listens into the first parameter of method "listen".
e.g. for port 2024
const app = express();
const server = http.createServer(app);
server.listen.(2024)
Upvotes: 0
Reputation: 2814
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');
Upvotes: 0
Reputation: 2999
you too use define your for nodemon:
$ nodemon --inspect ./bin/www 3000
Upvotes: 4
Reputation: 16740
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.
Upvotes: -2
Reputation: 4760
in package.json
"scripts":{
// "start": "node ./bin/www"
"start": "nodemon ./bin/www"
}
the following would now be equivalent:
$ npm start
$ nodemon ./bin/www
Upvotes: 103
Reputation: 183
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);
});
Upvotes: 14