Move start functionality to server.ts

This commit is contained in:
rijkvanzanten
2020-10-15 12:31:57 -04:00
parent 2c1b031288
commit a39b762c81
3 changed files with 27 additions and 28 deletions

View File

@@ -1,27 +1,5 @@
import logger from '../../logger';
import emitter from '../../emitter';
export default async function start() {
const env = require('../../env').default;
const { validateDBConnection } = require('../../database');
await validateDBConnection();
const port = env.PORT;
const startServer = require('../../server').start;
const server = require('../../server').default;
await emitter.emitAsync('server.start.before', { server });
server
.listen(port, () => {
logger.info(`Server started at port ${port}`);
emitter.emitAsync('server.start').catch((err) => logger.warn(err));
})
.once('error', (err: any) => {
if (err?.code === 'EADDRINUSE') {
logger.fatal(`Port ${port} is already in use`);
process.exit(1);
} else {
throw err;
}
});
await startServer();
}

View File

@@ -1,4 +1,3 @@
import server from './server';
import logger from './logger';
import { start } from './server';
server.listen(8055, () => logger.info(`Dev server started at port ${8055}`));
start();

View File

@@ -2,8 +2,9 @@ import logger from './logger';
import { createTerminus, TerminusOptions } from '@godaddy/terminus';
import http from 'http';
import emitter from './emitter';
import database from './database';
import database, { validateDBConnection } from './database';
import app from './app';
import env from './env';
const server = http.createServer(app);
@@ -20,6 +21,27 @@ createTerminus(server, terminusOptions);
export default server;
export async function start() {
await validateDBConnection();
await emitter.emitAsync('server.start.before', { server });
const port = env.PORT;
server
.listen(port, () => {
logger.info(`Server started at port ${port}`);
emitter.emitAsync('server.start').catch((err) => logger.warn(err));
})
.once('error', (err: any) => {
if (err?.code === 'EADDRINUSE') {
logger.fatal(`Port ${port} is already in use`);
process.exit(1);
} else {
throw err;
}
});
}
async function beforeShutdown() {
await emitter.emitAsync('server.stop.before', { server });