journey/server/server.mjs
Linus Miller ed79c5b7a6 convert server files to esm
- update deps
- remove midwest-service-errors
2020-09-06 19:49:49 +02:00

68 lines
1.7 KiB
JavaScript

import './console.mjs'
import config from './config/index.mjs'
// modules > native
import p from 'path'
// modules > 3rd party
import _ from 'lodash'
import chalk from 'chalk'
import express from 'express'
// modules > express middlewares
import bodyParser from 'body-parser'
// modules > midwest
import ensureFound from 'midwest/middleware/ensure-found.js'
import errorHandler from 'midwest/factories/error-handler.js'
import responder from 'midwest/middleware/responder.js'
import Morgan from 'morgan'
import apiRouter from './routers/api.mjs'
import publicRouter from './routers/index.mjs'
const server = express()
// get IP & whatnot from nginx proxy
server.set('trust proxy', true)
_.extend(server.locals, {
site: config.site,
})
// override default response render method for
// more convenient use with marko
server.response.render = function (_master, template) {
const locals = Object.assign({ query: this.req.query }, this.app.locals, this.locals)
this.send(template(locals))
}
if (config.env.NODE_ENV === 'development') {
// only log requests to console in development mode
server.use(Morgan('dev'))
}
server.use([
express.static(config.dir.dist, config.env.NODE_ENV === 'production' ? { maxAge: '1 year' } : null),
express.static(config.dir.static, config.env.NODE_ENV === 'production' ? { maxAge: '1 year' } : null),
bodyParser.json(),
bodyParser.urlencoded({ extended: true }),
])
// mount routers
server.use(publicRouter)
server.use('/api', apiRouter)
server.use([
ensureFound,
// transform and log error
errorHandler(config.errorHandler),
// respond
responder,
])
// Only start Express server when it is the main module (ie not required by test)
export default server