@fitch-digital/fitch-create-app
Version:
Boilerplate templates for FITCH projects
45 lines (36 loc) • 1.04 kB
JavaScript
const Hapi = require('@hapi/hapi');
const Inert = require('@hapi/inert');
const path = require('path');
const routes = require('./routes');
const init = async () => {
const port = process.env.PORT || 3000;
const relativeTo = path.join(process.cwd(), 'build');
const server = Hapi.server({
port,
host: '0.0.0.0',
routes: {
cors: true,
files: {
relativeTo,
},
},
});
await server.register(Inert);
server.route(routes);
// when all routes fail, redirect to index.
// also works with history api
server.ext('onPreResponse', (req, h) => {
const { response } = req;
if (response.isBoom && response.output.statusCode === 404) {
return h.file('index.html');
}
return h.continue;
});
await server.start();
console.log(`🚀 Server running on ${server.info.uri}`);
};
process.on('unhandledRejection', err => {
console.log(err);
process.exit(1);
});
init();