3

I'm following this article to start using node.js. I got to the part where I should start my app with node app command. However, upon typing in the command and pressing enter, I just get a new input line.

C:\Users\Raketa\Desktop\workout-tracker>npm install -d
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
...
npm info ok

C:\Users\Raketa\Desktop\workout-tracker>node app

C:\Users\Raketa\Desktop\workout-tracker>

The article says I should get

Express server listening on port 3000 in development mode.

Edit:

Upon going to http://localhost:3000, it displays ERR_CONNECTION_REFUSED site saying

This site can’t be reached

Edit2:

app.js as requested:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;
4
  • 1
    Can you confirm if the application is running at least? For instance try accessing http://localhost:3000/on your machine. Commented Jun 26, 2016 at 17:53
  • No, it says "This site can’t be reached" with the usual connection refused site. Commented Jun 26, 2016 at 17:53
  • 1
    can you put your app.js file in the question? Commented Jun 26, 2016 at 17:56
  • I didn't change anything. node.js created it as is. Commented Jun 26, 2016 at 17:58

3 Answers 3

3

As it is, the app does not listen on any port - please see my suggested modifications to the app.js file:

Please add something like this at the end of the file (before module.exports = app; line):

var server = app.listen(3000, function() {
    log.info('Express server listening on port 3000');
});

Give it a try and let me know if it helps.

Sign up to request clarification or add additional context in comments.

1 Comment

I don't think he needs the module.exports in this case- if app.js starts the server, there won't be any other file to require it
2

There's something missing in your file (or in the tutorial if you did it step by step). you are missing the actual command to start the server. You should have this (taken from the tutorial's github):

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port %s in %s mode.",  app.get('port'), app.settings.env);
});

This is the command that actually starts the server and tells it to listen

What you have is just a file that builds the root of your express server, and only exports it (this is why it exits immediately instead of listening for requests).

Add this instead of the module.exports = app; at the end of your file

1 Comment

I'm not currently home, but I can see that the code from github repo is completely different from file node.js generated. I think the article is outdated since I followed it step by step and haven't changed the code.
0

This is a bit embarrassing... but I didn't save my app.js file. That caused the behavior the OP describes.

I saved it and reran node app.js and it worked.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.