| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/usr/bin/env node
- /**
- * Module dependencies.
- */
- const app = require('../app')
- const debug = require('debug')('blog-post:server')
- const http = require('http')
- require('dotenv').config()
- /**
- * Get port from environment and store in Express.
- */
- const port = normalizePort(process.env.PORT || '3000')
- app.set('port', port)
- /**
- * Create HTTP server.
- */
- const server = http.createServer(app)
- /**
- * Listen on provided port, on all network interfaces.
- */
- server.listen(port)
- server.on('error', onError)
- server.on('listening', onListening)
- /**
- * Normalize a port into a number, string, or false.
- */
- function normalizePort(val) {
- const port = parseInt(val, 10)
- if (isNaN(port)) {
- // named pipe
- return val
- }
- if (port >= 0) {
- // port number
- return port
- }
- return false
- }
- /**
- * Event listener for HTTP server "error" event.
- */
- function onError(error) {
- if (error.syscall !== 'listen') {
- throw error
- }
- const bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges')
- process.exit(1)
- break
- case 'EADDRINUSE':
- console.error(bind + ' is already in use')
- process.exit(1)
- break
- default:
- throw error
- }
- }
- /**
- * Event listener for HTTP server "listening" event.
- */
- function onListening() {
- const addr = server.address()
- const bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port
- debug('Listening on ' + bind)
- }
|