server.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var express = require('express');
  2. var path = require('path');
  3. var logger = require('morgan');
  4. var compression = require('compression');
  5. var methodOverride = require('method-override');
  6. var session = require('express-session');
  7. var flash = require('express-flash');
  8. var bodyParser = require('body-parser');
  9. var expressValidator = require('express-validator');
  10. var dotenv = require('dotenv');
  11. var nunjucks = require('nunjucks');
  12. var markdown = require('nunjucks-markdown');
  13. var marked = require('marked');
  14. var mongoose = require('mongoose');
  15. var passport = require('passport');
  16. var routes = require('./routes');
  17. var processImage = require('express-processimage');
  18. // Load environment variables from .env file
  19. dotenv.load();
  20. // Passport OAuth strategies
  21. require('./config/passport');
  22. var app = express();
  23. mongoose.connect(process.env.DB_PATH);
  24. mongoose.connection.on('error', function() {
  25. console.log('MongoDB Connection Error. Please make sure that MongoDB is running.');
  26. process.exit(1);
  27. });
  28. // view engine setup
  29. var njks = nunjucks.configure('views', {
  30. autoescape: true,
  31. express: app,
  32. marked: true
  33. });
  34. markdown.register(njks, marked);
  35. app.set('view engine', 'html');
  36. app.set('port', process.env.PORT || 3999);
  37. app.use(compression());
  38. app.use(logger('dev'));
  39. app.use(bodyParser.json());
  40. app.use(bodyParser.urlencoded({ extended: false }));
  41. app.use(expressValidator());
  42. app.use(methodOverride('_method'));
  43. app.use(session({ secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: true }));
  44. app.use(flash());
  45. app.use(passport.initialize());
  46. app.use(passport.session());
  47. app.use(function(req, res, next) {
  48. res.locals.user = req.user;
  49. next();
  50. });
  51. /*
  52. * https://www.npmjs.com/package/express-processimage
  53. * pacote de thumb pra corrigir o issue: https://notabug.org/libreflix/libreflix/issues/19
  54. * instrução pra recortar uma imagem https://github.com/papandreou/express-processimage/issues/14
  55. */
  56. app.use(processImage(path.join(__dirname, 'public')));
  57. app.use(express.static(path.join(__dirname, 'public')));
  58. /**
  59. * Setup Routes
  60. */
  61. routes.init(app, passport);
  62. uploadDir = path.join(__dirname, '/public/media/');
  63. // Production error handler
  64. if (app.get('env') === 'production') {
  65. app.use(function(err, req, res, next) {
  66. console.error(err.stack);
  67. res.sendStatus(err.status || 500);
  68. });
  69. }
  70. app.listen(app.get('port'), function() {
  71. console.log('Express server listening on port ' + app.get('port'));
  72. });
  73. module.exports = app;