Spaces:
Sleeping
Sleeping
import 'reflect-metadata' | |
import express from 'express'; | |
import { jinaAiMiddleware } from "./patch-express"; | |
import { Server } from 'http'; | |
const app = require('../..').default; | |
const rootApp = express(); | |
rootApp.use(jinaAiMiddleware, app); | |
const port = process.env.PORT || 3000; | |
let server: Server | undefined; | |
// Export server startup function for better testing | |
export function startServer() { | |
return rootApp.listen(port, () => { | |
console.log(`Server running at http://localhost:${port}`); | |
}); | |
} | |
// Start server if running directly | |
if (process.env.NODE_ENV !== 'test') { | |
server = startServer(); | |
} | |
process.on('unhandledRejection', (_err) => `Is false alarm`); | |
process.on('uncaughtException', (err) => { | |
console.log('Uncaught exception', err); | |
// Looks like Firebase runtime does not handle error properly. | |
// Make sure to quit the process. | |
process.nextTick(() => process.exit(1)); | |
console.error('Uncaught exception, process quit.'); | |
throw err; | |
}); | |
const sigHandler = (signal: string) => { | |
console.log(`Received ${signal}, exiting...`); | |
if (server && server.listening) { | |
console.log(`Shutting down gracefully...`); | |
console.log(`Waiting for the server to drain and close...`); | |
server.close((err) => { | |
if (err) { | |
console.error('Error while closing server', err); | |
return; | |
} | |
process.exit(0); | |
}); | |
server.closeIdleConnections(); | |
} | |
} | |
process.on('SIGTERM', sigHandler); | |
process.on('SIGINT', sigHandler); |