---|main| Initial commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
var appEnv = process.env.APP_ENV;
|
||||
if (appEnv == undefined) {
|
||||
appEnv = 'development';
|
||||
}
|
||||
require('dotenv').config({ path: `.env.${appEnv}` });
|
||||
const { promisify } = require('util'),
|
||||
bodyParser = require('body-parser'),
|
||||
chalk = require('chalk'),
|
||||
utils = require('./routes/utils');
|
||||
var express = require('express'),
|
||||
session = require('express-session'),
|
||||
cors = require('cors'),
|
||||
errorhandler = require('errorhandler'),
|
||||
mongoose = require('mongoose'),
|
||||
morgan = require('morgan');
|
||||
|
||||
var isProduction = appEnv === 'production';
|
||||
|
||||
// Create global app object
|
||||
var app = express();
|
||||
|
||||
app.use(cors());
|
||||
|
||||
// Normal express config defaults
|
||||
//app.use(morgan('combined'));
|
||||
morgan.token('statusColor', (req, res, args) => {
|
||||
var status = (typeof res.headersSent !== 'boolean' ? Boolean(res.header) : res.headersSent)
|
||||
? res.statusCode
|
||||
: undefined
|
||||
|
||||
return status >= 500 ? chalk.red(status)
|
||||
: status >= 429 ? chalk.magenta(status)
|
||||
: status >= 400 ? chalk.yellow(status)
|
||||
: status >= 300 ? chalk.cyan(status)
|
||||
: status >= 200 ? chalk.green(status)
|
||||
: chalk.underline(status);
|
||||
});
|
||||
app.use(morgan('[:date[iso]] ":method :url HTTP/:http-version" :statusColor :res[content-length] ":referrer" ":user-agent" :remote-addr'));
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(bodyParser.json());
|
||||
|
||||
app.use(require('method-override')());
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
app.use(session({ secret: 'acapisecret', cookie: { maxAge: 60000 }, resave: false, saveUninitialized: false }));
|
||||
|
||||
if (!isProduction) {
|
||||
app.use(errorhandler());
|
||||
}
|
||||
|
||||
if(isProduction){
|
||||
mongoose.connect(process.env.MONGODB_URI);
|
||||
} else {
|
||||
mongoose.set('strictQuery', true);
|
||||
mongoose.connect(process.env.MONGODB_URI).then(() => {
|
||||
console.log(`${utils.getDateTimeISOString()}`, chalk.green('MongoDB connection has been established successfully'));
|
||||
}).catch(() => {
|
||||
console.log(`${utils.getDateTimeISOString()}`, chalk.red('Unable to connect to the MongoDB database'));
|
||||
});
|
||||
mongoose.set('debug', process.env.DEBUG);
|
||||
}
|
||||
require('./models/mongo/User');
|
||||
require('./models/mongo/Application');
|
||||
require('./models/mongo/Aeronef');
|
||||
require('./models/mongo/Canopy');
|
||||
require('./models/mongo/Dropzone');
|
||||
require('./models/mongo/Jump');
|
||||
/*
|
||||
require('./models/mongo/Metal');
|
||||
require('./models/mongo/Price');
|
||||
require('./models/mongo/Product');
|
||||
*/
|
||||
require('./config/passport');
|
||||
|
||||
app.use(require('./routes'));
|
||||
|
||||
/// 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 (!isProduction) {
|
||||
app.use(function(err, req, res, next) {
|
||||
console.log(`${utils.getDateTimeISOString()}`, chalk.red(`error handler : ${err.message} ${err.err}`));
|
||||
res.status(err.status || 500);
|
||||
res.json({errors: {
|
||||
message: err.message,
|
||||
error: err.err,
|
||||
stack: err.stack
|
||||
}});
|
||||
});
|
||||
} else {
|
||||
// production error handler
|
||||
// no stacktraces leaked to user
|
||||
app.use(function(err, req, res, next) {
|
||||
res.status(err.status || 500);
|
||||
res.json({errors: {
|
||||
message: err.message,
|
||||
error: {},
|
||||
stack: {}
|
||||
}});
|
||||
});
|
||||
}
|
||||
|
||||
const startServer = async () => {
|
||||
const port = process.env.SERVER_PORT || 3200;
|
||||
await promisify(app.listen).bind(app)(port);
|
||||
console.log(`${utils.getDateTimeISOString()}`, chalk.green(`${process.env.APP_ENV} API server listening on port ${port}`));
|
||||
}
|
||||
|
||||
// finally, let's start our server...
|
||||
startServer();
|
||||
Reference in New Issue
Block a user