| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- const express = require('express');
- const webpack = require('webpack');
- const path = require('path');
- const getConfig = require('config');
- const { getLogger } = require('modules/logger');
- const { getDBConnection } = require('modules/db');
- const webpackConfig = require('../webpack.config');
- function healthEndpoint(config, db, logger, app) {
- app.get('/health', (req, res) => {
- res.send('OK');
- });
- }
- function setupDevServer(config, db, logger, app) {
- if (!config.__DEV__) {
- return;
- }
- const compiler = webpack(webpackConfig);
- const serverOptions = {
- quiet: true,
- publicPath: webpackConfig.output.publicPath,
- hot: true
- };
- // eslint-disable-next-line global-require
- app.use(require('webpack-dev-middleware')(compiler, serverOptions));
- // eslint-disable-next-line global-require
- app.use(require('webpack-hot-middleware')(compiler));
- }
- function clientRoute(config, db, logger, app) {
- app.use(express.static(path.resolve(__dirname, '../static')));
- }
- async function run() {
- const config = getConfig();
- const logger = getLogger(config);
- try {
- const db = await getDBConnection(config, logger);
- const app = express();
- healthEndpoint(config, db, logger, app);
- setupDevServer(config, db, logger, app);
- clientRoute(config, db, logger, app);
- const port = process.env.PORT || 3000;
- app.listen(port, () => {
- logger.info('Listening on port', port);
- });
- } catch (err) {
- logger.error('Error setting up app');
- logger.error(err.stack);
- }
- }
- module.exports = {
- run
- };
|