server/start.js
'use strict'
const express = require('express')
const bodyParser = require('body-parser')
const {resolve} = require('path')
const passport = require('passport')
const pkg = require('../index.js')
const app = express()
if (!pkg.isProduction && !pkg.isTesting) {
// Logging middleware (dev only)
app.use(require('volleyball'))
}
module.exports = app
// We'll store the whole session in a cookie
.use(require('cookie-session') ({
name: 'session',
keys: [process.env.SESSION_SECRET || 'an insecure secret key'],
}))
// Body parsing middleware
.use(bodyParser.urlencoded({ extended: true }))
.use(bodyParser.json())
// Authentication middleware
.use(passport.initialize())
.use(passport.session())
// Serve static files from ../public
.use(express.static(resolve(__dirname, '..', 'public')))
// Serve our api
.use('/api', require('./api'))
// Send index.html for anything else.
.get('/*', (_, res) => res.sendFile(resolve(__dirname, '..', 'public', 'index.html')))
if (module === require.main) {
// Start listening only if we're the main module.
//
// https://nodejs.org/api/modules.html#modules_accessing_the_main_module
const server = app.listen(
process.env.PORT || 1337,
() => {
console.log(`--- Started HTTP Server for ${pkg.name} ---`)
console.log(`Listening on ${JSON.stringify(server.address())}`)
}
)
}