javascript - nodejs seperate code include middleware use() -
i'm new nodejs, below app.js
installed express --sessions --css less --hogan app
command.
tried separate commented line in app.js
move new file call route_handler.js
.
i'm not sure doing correct add require('./route_handler.js');
in app.js
, should have export in route_handler.js
express()
?
how solve it?
does require
means execute code in file?
app.js
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', 'hjs'); // end: view engine setup require('./route_handler.js'); // // 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(require('less-middleware')(path.join(__dirname, 'public'))); // 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: {} }); }); module.exports = app;
route_handler.js
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 app = express(); var routes = require('./routes/index'); var users = require('./routes/users'); // uncomment after placing favicon in /public //express().use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); express().use(logger('dev')); express().use(bodyparser.json()); express().use(bodyparser.urlencoded({ extended: false })); express().use(cookieparser()); express().use(require('less-middleware')(path.join(__dirname, 'public'))); express().use(express.static(path.join(__dirname, 'public'))); express().use('/', routes); express().use('/users', users); // catch 404 , forward error handler express().use(function(req, res, next) { var err = new error('not found'); err.status = 404; next(err); });
// expore express() ??
your problem route_handler.js
script creates new express
instances in every use
call, , non of them connected app created in app.js
.
what should like:
route_handler.js
// !!!note: no express = require !!! 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'); function setuproutes(app) { // 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()); ... } module.exports = setuproutes;
and app.js
... require('./route_handler.js')(app); ...
Comments
Post a Comment