34 lines
876 B
JavaScript
34 lines
876 B
JavaScript
|
// this ensures node understands the future
|
||
|
require('babel-register');
|
||
|
const _ = require('lodash');
|
||
|
const createDebugger = require('debug');
|
||
|
|
||
|
const log = createDebugger('fcc:server:production-start');
|
||
|
const startTime = Date.now();
|
||
|
// force logger to always output
|
||
|
// this may be brittle
|
||
|
log.enabled = true;
|
||
|
// this is where server starts booting up
|
||
|
const app = require('./server');
|
||
|
|
||
|
|
||
|
let timeoutHandler;
|
||
|
let killTime = 15;
|
||
|
|
||
|
const onConnect = _.once(() => {
|
||
|
log('db connected in: %s', Date.now() - startTime);
|
||
|
if (timeoutHandler) {
|
||
|
clearTimeout(timeoutHandler);
|
||
|
}
|
||
|
app.start();
|
||
|
});
|
||
|
|
||
|
timeoutHandler = setTimeout(() => {
|
||
|
const message = `db did not connect after ${killTime}s -- crashing hard`;
|
||
|
// purposely shutdown server
|
||
|
// pm2 should restart this in production
|
||
|
throw new Error(message);
|
||
|
}, killTime * 1000);
|
||
|
|
||
|
app.dataSources.db.on('connected', onConnect);
|