UNPKG

2.33 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3/**
4 * Module dependencies.
5 */
6const chalk = require('chalk');
7const app = require('./app');
8const http = require('http');
9const log = console.log;
10const dev = (str)=>{
11
12 if(process.env.NODE_ENV!== "development") return;
13
14 return console.log(str);
15}
16
17/**
18 * Get port from environment and store in Express.
19 */
20
21var port = normalizePort(process.env.PORT || '5000');
22app.set('port', port);
23
24/**
25 * Create HTTP server.
26 */
27
28var server = http.createServer(app);
29
30/**
31 * Socket IO setup if it is attached via middleware
32 */
33var io = app.get('io');
34if(io) io.attach(server);
35
36/**
37 * Listen on provided port, on all network interfaces.
38 */
39
40
41server.on('error', onError);
42server.on('listening', onListening);
43server.listen(port);
44
45/**
46 * Normalize a port into a number, string, or false.
47 */
48
49function normalizePort(val) {
50 var port = parseInt(val, 10);
51
52 if (isNaN(port)) {
53 // named pipe
54 return val;
55 }
56
57 if (port >= 0) {
58 // port number
59 return port;
60 }
61
62 return false;
63}
64
65/**
66 * Event listener for HTTP server "error" event.
67 */
68
69function onError(error) {
70 if (error.syscall !== 'listen') {
71 throw error;
72 }
73
74 var bind = typeof port === 'string' ?
75 'Pipe ' + port :
76 'Port ' + port;
77
78 // handle specific listen errors with friendly messages
79 switch (error.code) {
80 case 'EACCES':
81 console.error(bind + ' requires elevated privileges');
82 process.exit(1);
83 break;
84 case 'EADDRINUSE':
85 console.error(bind + ' is already in use');
86 process.exit(1);
87 break;
88 default:
89 throw error;
90 }
91}
92
93/**
94 * Event listener for HTTP server "listening" event.
95 */
96
97function onListening() {
98 var addr = server.address();
99 var bind = typeof addr === 'string' ?
100 'pipe ' + addr :
101 'port ' + addr.port;
102 log(`Server ready at ${chalk.green.underline(`http://localhost:${addr.port}`)} \n`);
103 dev(`To launch a development server, use ${chalk.blue('npm run start')}.\n`)
104 dev("To pass requests from development server.");
105 dev(`Set 'proxy' in package.json to ${chalk.blue(`http://localhost:${addr.port}`)} \n`)
106}
\No newline at end of file