generated from nhcarrigan/template
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import Fastify from 'fastify';
|
|
import { app } from './app/app';
|
|
import { logger } from './app/utils/logger';
|
|
|
|
const host = process.env.HOST ?? 'localhost';
|
|
const port = process.env.PORT ? Number(process.env.PORT) : 12321;
|
|
|
|
// Global error handlers
|
|
process.on('uncaughtException', (error: Error) => {
|
|
void logger.error('Uncaught Exception', error);
|
|
process.exit(1);
|
|
});
|
|
|
|
process.on('unhandledRejection', (reason: unknown) => {
|
|
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
void logger.error('Unhandled Rejection', error);
|
|
process.exit(1);
|
|
});
|
|
|
|
process.on('warning', (warning: Error) => {
|
|
void logger.log('warn', `Process Warning: ${warning.name} - ${warning.message}`);
|
|
});
|
|
|
|
process.on('SIGTERM', () => {
|
|
void logger.log('info', 'SIGTERM signal received: closing HTTP server');
|
|
server.close(() => {
|
|
void logger.log('info', 'HTTP server closed');
|
|
process.exit(0);
|
|
});
|
|
});
|
|
|
|
process.on('SIGINT', () => {
|
|
void logger.log('info', 'SIGINT signal received: closing HTTP server');
|
|
server.close(() => {
|
|
void logger.log('info', 'HTTP server closed');
|
|
process.exit(0);
|
|
});
|
|
});
|
|
|
|
// Instantiate Fastify with some config
|
|
const server = Fastify({
|
|
logger: true,
|
|
bodyLimit: 1048576, // 1MB max body size
|
|
});
|
|
|
|
// Register your application as a normal plugin.
|
|
server.register(app);
|
|
|
|
// Start listening.
|
|
server.listen({ port, host }, (err) => {
|
|
if (err) {
|
|
server.log.error(err);
|
|
process.exit(1);
|
|
} else {
|
|
void logger.log('info', `Server ready at http://${host}:${port}`);
|
|
}
|
|
});
|