www 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env node
  2. /**
  3. * Module dependencies.
  4. */
  5. var app = require('../app');
  6. var debug = require('debug')('node-api:server');
  7. /**
  8. * Get port from environment and store in Express.
  9. */
  10. var port = normalizePort(process.env.PORT || '3000');
  11. /**
  12. * Listen on provided port, on all network interfaces.
  13. */
  14. app.listen(port, function(token) {
  15. if (!token) {
  16. require('net').createServer().once('error', onError);
  17. }
  18. debug('Listening on port ' + port);
  19. });
  20. /**
  21. * Normalize a port into a number, string, or false.
  22. */
  23. function normalizePort(val) {
  24. var port = parseInt(val, 10);
  25. if (isNaN(port)) {
  26. // named pipe: unsupported now
  27. return false;
  28. }
  29. if (port >= 0) {
  30. // port number
  31. return port;
  32. }
  33. return false;
  34. }
  35. /**
  36. * Event listener for HTTP server "error" event.
  37. */
  38. function onError(error) {
  39. if (error.syscall !== 'listen') {
  40. throw error;
  41. }
  42. // handle specific listen errors with friendly messages
  43. switch (error.code) {
  44. case 'EACCES':
  45. console.error('Port ' + port + ' requires elevated privileges');
  46. process.exit(1);
  47. break;
  48. case 'EADDRINUSE':
  49. console.error('Port ' + port + ' is already in use');
  50. process.exit(1);
  51. break;
  52. default:
  53. throw error;
  54. }
  55. }