aboutsummaryrefslogtreecommitdiff
path: root/src/server/bin/www
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/bin/www')
-rwxr-xr-xsrc/server/bin/www60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/server/bin/www b/src/server/bin/www
new file mode 100755
index 0000000..545db41
--- /dev/null
+++ b/src/server/bin/www
@@ -0,0 +1,60 @@
+#!/usr/bin/env node
+
+const app = require('../app')
+const http = require('http')
+
+const port = normalizePort(process.env.PORT || '3000')
+const server = http.createServer(app)
+
+server.listen(port)
+server.on('error', error => onError(error, port))
+server.on('listening', _ => onListening(server))
+
+function normalizePort (val) {
+ const port = parseInt(val, 10)
+
+ if (isNaN(port)) {
+ // named pipe
+ return val
+ }
+
+ if (port >= 0) {
+ // port number
+ return port
+ }
+
+ return false
+}
+
+function onError (error, port) {
+ 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
+ }
+}
+
+function onListening (server) {
+ const addr = server.address()
+ if (typeof addr === 'string') {
+ console.log(`Listening on pipe ${addr}`)
+ } else {
+ console.log(`Listening on http://localhost:${addr.port}/`)
+ }
+}