www 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/env node
  2. /**
  3. * Module dependencies.
  4. */
  5. var path = require('path');
  6. var fs = require('fs');
  7. var envFile = path.join(__dirname, '../.env');
  8. try {
  9. fs.accessSync(envFile, fs.F_OK);
  10. require('dotenv').config({path: envFile});
  11. } catch (e) {
  12. // no env file
  13. }
  14. var app = require('../app');
  15. var debug = require('debug')('slack-invite-automation:server');
  16. var http = require('http');
  17. /**
  18. * Normalize a port into a number, string, or false.
  19. * @param {int} val
  20. */
  21. function normalizePort(val) {
  22. var port = parseInt(val, 10);
  23. if (isNaN(port)) {
  24. return val;
  25. } else if (port >= 0) {
  26. return port;
  27. }
  28. return false;
  29. }
  30. /**
  31. * Get port from environment and store in Express.
  32. */
  33. var port = normalizePort(process.env.PORT || '3000');
  34. app.set('port', port);
  35. /**
  36. * Create HTTP server.
  37. */
  38. var server = http.createServer(app);
  39. /**
  40. * Listen on provided port, on all network interfaces.
  41. */
  42. server.listen(port);
  43. server.on('error', onError);
  44. server.on('listening', onListening);
  45. /**
  46. * Event listener for HTTP server "error" event.
  47. */
  48. function onError(error) {
  49. if (error.syscall !== 'listen') {
  50. throw error;
  51. }
  52. // handle specific listen errors with friendly messages
  53. switch (error.code) {
  54. case 'EACCES':
  55. console.error('Port ' + port + ' requires elevated privileges');
  56. process.exit(1);
  57. break;
  58. case 'EADDRINUSE':
  59. console.error('Port ' + port + ' is already in use');
  60. process.exit(1);
  61. break;
  62. default:
  63. throw error;
  64. }
  65. }
  66. /**
  67. * Event listener for HTTP server "listening" event.
  68. */
  69. function onListening() {
  70. debug('Listening on port ' + server.address().port);
  71. }