UNPKG

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