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
Post a Comment