diff options
-rw-r--r-- | app.js | 39 | ||||
-rw-r--r-- | config/config.js | 15 | ||||
-rw-r--r-- | config/express.js | 60 | ||||
-rw-r--r-- | package.json | 2 |
4 files changed, 89 insertions, 27 deletions
@@ -5,45 +5,32 @@ var express = require('express') , path = require('path') - , bcrypt = require('bcrypt') , passport = require('passport'); + var app = express(); // initiates express /** * App configuration */ +var port = process.env.PORT || 3000 + , env = process.env.NODE_ENV || 'development' + , config = require('./config/config')[env]; -app.configure(function(){ - // this controls the port the application will be running on. - // by adding 'process.enc.PORT' we enable the app to run on automated systems like heroku - app.set('port', process.env.PORT || 3000); - - app.set('views', __dirname + '/views'); // sets views to the right directory - app.set('view engine', 'ejs'); // initiates viewengine. We use EJS, or embedded js - http://embeddedjs.com/ - app.use(express.favicon(__dirname + '/public/faviconb.ico')); // sets favicon - app.use(express.logger('dev')); - app.use(express.bodyParser()); - app.use(express.cookieParser()); - app.use(express.session({ secret: 'lsdrghoi4hgqio42nqf2uqi32f3bilu23fl23b' })); - app.use(express.methodOverride()); - app.use(require('less-middleware')({ src: __dirname + '/public' })); - app.use(express.static(path.join(__dirname, 'public'))); - app.use(passport.initialize()); - app.use(passport.session()); -}); -app.configure('development', function(){ - app.use(express.errorHandler()); -}); +/** + * Express + */ +var app = express(); +// express settings +require('./config/express')(app, config, passport); /** * Routes */ - -require('./router')(app); +require('./router')(app, config); @@ -51,8 +38,8 @@ require('./router')(app); * Server initiation */ -app.listen(app.get('port'), function() { - console.log("Express server listening on port " + app.get('port')); +app.listen(port, function() { + console.log("Express server listening on port " + port); }); diff --git a/config/config.js b/config/config.js new file mode 100644 index 0000000..8312ddc --- /dev/null +++ b/config/config.js @@ -0,0 +1,15 @@ +var path = require('path') + , rootPath = path.normalize(__dirname + '/..'); + + +module.exports = { + development: { + db: 'mongodb://localhost/test', + root: rootPath, + app: { + name: 'Divid' + } + } +} + + diff --git a/config/express.js b/config/express.js new file mode 100644 index 0000000..4afd827 --- /dev/null +++ b/config/express.js @@ -0,0 +1,60 @@ + +/** + * Module dependencies + */ + +var express = require('express'); + + +/** + * Module + */ + +module.exports = function (app, config, passport) { + + //sets view engine and path + app.set('views', config.root + '/views'); + app.set('view engine', 'ejs'); + + app.use(express.static(config.root + '/public')); + + // don't use logger for test enc + if (process.env.NODE_ENV !== 'test') app.use(express.logger('dev')); + + + app.configure(function () { + + app.use(express.cookieParser()); //must be above sessions + + app.use(express.bodyParser()); //must be above methodOverride + + app.use(express.methodOverride()); + + app.use(express.session({ secret: 'lsdrghoi4hgqio42nqf2uqi32f3bilu23fl23b' })); + + // use passport session + app.use(passport.initialize()); + app.use(passport.session()); + + app.use(express.favicon(__dirname + '/public/faviconb.ico')); + + // use LESS for CSS + app.use(require('less-middleware')({ src: config.root + '/public' })); + + app.use(app.router); + + app.use(function(err, req, res, next) { + if (~err.message.indexOf('not fount')) return next(); // treat like 404 + + console.error(err.stack); + + res.status(500).render('500', { error: err.stack }); // render page + }); + + app.use(function(req, res, next) { + res.status(404).render('404', { url: req.originalUrl, error: 'Not found' }); // render page + }); + }); +} + + diff --git a/package.json b/package.json index 48ae466..08595cb 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ , "bcrypt": "latest" , "nodemon": "latest" } - , "decDependencies": { + , "devDependencies": { "mocha": "latest" } } |