litebb/bin/www

1#!/usr/bin/env node 2 3/** 4 * Module dependencies. 5 */ 6 7require('dotenv').config(); 8 9const app = require('../app'); 10const debug = require('debug')('litebb:server'); 11const http = require('http'); 12const models = require('../models'); 13 14 15/** 16 * Get port from environment and store in Express. 17 */ 18 19const port = normalizePort(process.env.PORT || '3000'); 20app.set('port', port); 21 22/** 23 * Create HTTP server. 24 */ 25 26const server = http.createServer(app); 27 28models.sequelize.sync().then(() => { 29 /** 30 * Listen on provided port, on all network interfaces. 31 */ 32 33 server.listen(port); 34 server.on('error', onError); 35 server.on('listening', onListening); 36}) 37 38 39/** 40 * Normalize a port into a number, string, or false. 41 */ 42 43function normalizePort(val) { 44 const port = parseInt(val, 10); 45 46 if (isNaN(port)) { 47 // named pipe 48 return val; 49 } 50 51 if (port >= 0) { 52 // port number 53 return port; 54 } 55 56 return false; 57} 58 59/** 60 * Event listener for HTTP server "error" event. 61 */ 62 63function onError(error) { 64 if (error.syscall !== 'listen') { 65 throw error; 66 } 67 68 const bind = typeof port === 'string' 69 ? 'Pipe ' + port 70 : 'Port ' + port; 71 72 // handle specific listen errors with friendly messages 73 switch (error.code) { 74 case 'EACCES': 75 console.error(bind + ' requires elevated privileges'); 76 process.exit(1); 77 break; 78 case 'EADDRINUSE': 79 console.error(bind + ' is already in use'); 80 process.exit(1); 81 break; 82 default: 83 throw error; 84 } 85} 86 87/** 88 * Event listener for HTTP server "listening" event. 89 */ 90 91function onListening() { 92 const addr = server.address(); 93 const bind = typeof addr === 'string' 94 ? 'pipe ' + addr 95 : 'port ' + addr.port; 96 debug('Listening on ' + bind); 97}