33 lines
		
	
	
		
			876 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			33 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);
 |