X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Fapp.js;fp=server%2Fapp.js;h=aa8cade0cb85bb13cb1fb1ba85dc2003f9bdaa14;hb=625022fdcf750f0aff8fcd699f7e9b89730e1d10;hp=0000000000000000000000000000000000000000;hpb=b955c65b942d09d24b5c3bed0d755d4f2f8f71f1;p=vchess.git diff --git a/server/app.js b/server/app.js new file mode 100644 index 00000000..aa8cade0 --- /dev/null +++ b/server/app.js @@ -0,0 +1,67 @@ +var createError = require('http-errors'); +var express = require('express'); +var path = require('path'); +var cookieParser = require('cookie-parser'); +var logger = require('morgan'); +var favicon = require('serve-favicon'); + +var app = express(); + +app.use(favicon(path.join(__dirname, "favicon", "favicon.ico"))); + +if (app.get('env') === 'development') +{ + // Full logging in development mode + app.use(logger('dev')); +} +else +{ + // http://dev.rdybarra.com/2016/06/23/Production-Logging-With-Morgan-In-Express/ + app.set('trust proxy', true); + // In prod, only log error responses (https://github.com/expressjs/morgan) + app.use(logger('combined', { + skip: function (req, res) { return res.statusCode < 400 } + })); +} + +app.use(express.json()); +app.use(express.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'serve'))); //client "prod" files + +// In development stage the client side has its own server +if (app.get('env') === 'development') +{ + app.use(function(req, res, next) { + res.header("Access-Control-Allow-Origin", "*"); + res.header("Access-Control-Allow-Headers", + "Origin, X-Requested-With, Content-Type, Accept"); + next(); + }); +} + +// Routing (AJAX-only) +const routes = require(path.join(__dirname, "routes", "all")); +app.use('/', routes); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + next(createError(404)); +}); + +// error handler +app.use(function(err, req, res, next) { + // set locals, only providing error in development + res.locals.message = err.message; + res.locals.error = (req.app.get('env') === 'development' ? err : {}); + // render the error page + res.status(err.status || 500); + res.send(` + +

= message

+

= error.status

+
#{error.stack}
+ `); +}); + +module.exports = app;