Skip to content

Instantly share code, notes, and snippets.

@alexbeletsky
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexbeletsky/c7f9d9ef44e3464a3c1b to your computer and use it in GitHub Desktop.
Save alexbeletsky/c7f9d9ef44e3464a3c1b to your computer and use it in GitHub Desktop.
var express = require('express');
var mysql = require('mysql');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var morgan = require('morgan');
var cors = require('cors');
var health = require('express-ping');
var connection = require('express-myconnection');
var json2csv = require('nice-json2csv');
var config = require('./config');
var middleware = require('./source/middleware');
var logger = require('./source/utils/logger');
var auth = require('./source/utils/auth');
var app = express();
var env = process.env.NODE_ENV || 'development';
var port = process.env.PORT || 3010;
morgan.format('custom', ':method :url :req[content-type] :req[content-length] HTTP/:http-version :status :res[content-length] - :response-time ms');
app.use(morgan('custom', {stream: logger.stream()}));
app.use(health.ping('/'));
app.use(connection(mysql, config.mysql.connection, 'request'));
app.use(middleware.db.mysql(config.mysql));
app.use(middleware.db.mongo(config.mongo));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(json2csv.expressDecorator);
app.use(cors());
auth(app, ['/api']);
require('./source/api')(app);
app.use(middleware.errors());
app.listen(port);
var util = require('util');
var logger = require('../utils/logger');
function errors(err, req, res, next) {
function includeStack(stack) {
return process.env.NODE_ENV === 'production' ? [] : stack;
}
return function (err, req, res, next) {
err = util.isError(err) ? {message: err.message, stack: includeStack(err.stack)} : err;
if (!err.status) {
err.status = 500;
}
logger.error(err);
res.status(err.status).json(err);
};
}
module.exports = errors;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment