node.js - Express Routing with Standard Express.js 4 (generator) Installation Not Working -


my question less production code , more of issue official documentation wants learn new script or language.

after installing express-generator (0.12.2) , express (4.13.1), able run following create new project running following command:

npm express example 

the example directory on drive , change directories , install default dependencies package.json file:

cd example && npm install 

no problems far.

i open app.js file located in root of 'example' directory , express 4 version of app.js follows:

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 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 , forward error handler app.use(function(req, res, next) {   var err = new error('not found');   err.status = 404;   next(err); });  // error handlers  // development error handler // 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 user app.use(function(err, req, res, next) {   res.status(err.status || 500);   res.render('error', {     message: err.message,     error: {}       }); });  app.listen(3000) module.exports = app; 

after adding app.listen(3000); line (second last line) learned previous thread (starting express.js using app.js or 'npm start'?), running following command allows me server example directory:

node app.js 

all well. however, after visiting express documentation, version 4 (http://expressjs.com/guide/routing.html), see following instructions:

route paths route paths, in combination request method, define endpoints @ requests can made to. can strings, string patterns, or regular expressions. examples of route paths based on strings:

// match request root app.get('/', function (req, res) {   res.send('root'); });  // match requests /about app.get('/about', function (req, res) {   res.send('about'); });  // match request /random.text app.get('/random.text', function (req, res) {   res.send('random.text'); }); 

after adding following line express 4 documentation:

// match requests /about app.get('/about', function (req, res) {   res.send('about'); }); 

and visiting following url:

http://127.0.0.1:3000/about 

i receive 404 not found error, along error @ line 30, is:

28 // application routes 29 app.post('/', function(req, res, next) { 30  res.send(req.body); 31 }); 

any ideas?

if added code below after app.use said, code should work:

// match requests /about app.get('/about', function (req, res) {   res.send('about'); }); 

you add more code , problem. hint: don't see app.post in original code.

here code new app.get /about route works:

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 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);  // match requests /about app.get('/about', function (req, res) {   res.send('about'); });  // catch 404 , forward error handler app.use(function(req, res, next) {   var err = new error('not found');   err.status = 404;   next(err); });  // error handlers  // development error handler // 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 user app.use(function(err, req, res, next) {   res.status(err.status || 500);   res.render('error', {     message: err.message,     error: {}   }); });  app.listen(3000); module.exports = app; 

Comments