UNPKG

ember-rocks

Version:

An Em(ber) command line utility to help you build an ambitious web application

99 lines (85 loc) 2.7 kB
module.exports = function (options) { var PUBLIC_PATH, VIEWS_PATH, app, express, fs, emberApp, sysPath, env, logger, favicon, cookieParser, bodyParser; express = require('express'); sysPath = require('path'); fs = require('fs'); logger = require('morgan'); favicon = require('static-favicon'); cookieParser = require('cookie-parser'); bodyParser = require('body-parser'); app = module.exports = express(); emberApp = 'client'; PUBLIC_PATH = sysPath.join(__dirname, '..', emberApp); VIEWS_PATH = sysPath.join(__dirname, '..', 'server/views'); env = process.env.NODE_ENV || 'development'; var rootRoute = require('./routes/index'); app.set('view engine', 'jade'); app.set('views', VIEWS_PATH); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(cookieParser()); // app.use(express.methodOverride()); app.use(express.static(PUBLIC_PATH)); // Send cross-origin resource sharing enabling header. // app.use(function(req, response, next) { // req.header('Cache-Control', 'no-cache'); // req.header('Access-Control-Allow-Origin', '*'); // next(); // }); // Need to be deleted in development // GET mocks data from /server/mocks/people.json var fakeUsersRoute = require('./routes/mock_users'); app.get('/api/:query', fakeUsersRoute.all); // Route General app.use('/', rootRoute); // 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') { if (process.argv[3]) { options = { host: process.argv[2], port: process.argv[3] }; } else { options = { host: 'localhost', port: 3001 }; } 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: {} }); }); return app.listen(options.port, function () { return console.log( 'Starting web server on port ' + options.port + ' in ' + app.locals.settings.env + ' mode' ); }).on('error', function (err) { if (err.code === 'EADDRINUSE') { return console.log('Port ' + options.port + ' is already in use by another process.'); } }); };