app.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const express = require('express');
  2. const path = require('path');
  3. const app = express();
  4. const config = require('./config/app')
  5. const session = require('express-session');
  6. const RedisStore = require('connect-redis')(session);
  7. const cookieParser = require('cookie-parser');
  8. const bodyParser = require('body-parser');
  9. const compression = require('compression');
  10. const authChecker = require('./libs/auth/checker');
  11. app.set('trust proxy', 1) //trust first proxy, get ip
  12. // 设置视图引擎为EJS
  13. app.set('view engine', 'ejs');
  14. // 设置视图目录
  15. app.set('views', path.join(__dirname, 'views'));
  16. /**
  17. * Check should compress.
  18. */
  19. function shouldCompress(req, res) {
  20. if (req.headers['x-no-compression']) {
  21. // don't compress responses with this request header
  22. return false
  23. }
  24. // fallback to standard filter function
  25. return compression.filter(req, res)
  26. }
  27. app.use(compression({
  28. filter: shouldCompress
  29. }));
  30. app.use(cookieParser());
  31. app.use(express.static(config.STATIC_DIR));
  32. app.use(express.static(path.join(__dirname, 'dist')));
  33. app.use(session({
  34. store: new RedisStore({
  35. prefix: 'artsite_sess:'
  36. }),
  37. cookie: config.cookie,
  38. saveUninitialized: false,
  39. secret: 'MhxzKhl123.',
  40. resave: false,
  41. name: config.sessionName || sid,
  42. }));
  43. app.use(bodyParser.json());
  44. app.use(bodyParser.urlencoded({
  45. extended: false
  46. }));
  47. app.use('/napi/web/auth', require('./routes/napi/web/auth'));
  48. app.use('/napi/web/menu', authChecker.checkLogin, require('./routes/napi/web/menu'));
  49. app.use('/napi/web/art', authChecker.checkLogin, require('./routes/napi/web/art'));
  50. app.use('/napi/web/user', authChecker.checkLogin, require('./routes/napi/web/user'));
  51. app.use('/napi/web/role', authChecker.checkLogin, require('./routes/napi/web/role'));
  52. app.use('/thumbs/v1', require('./routes/res/thumbs'));
  53. app.use('/proxy', require('./routes/proxy'));
  54. app.use('/', require('./routes/index'));
  55. app.use('/download', require('./routes/res/download'));
  56. // catch 404 and forward to error handler
  57. app.use(function (req, res) {
  58. // 设置状态码为404
  59. res.status(404);
  60. // res.sendFile(path.join(__dirname, '404.html'));
  61. res.render('404', { title: '404 Error', description: 'PAGE NOT FOUND' });
  62. });
  63. // error handler
  64. app.use(function (err, req, res, next) {
  65. // set locals, only providing error in development
  66. res.locals.message = err.message;
  67. res.locals.error = req.app.get('env') === 'development' ? err : {};
  68. console.log("error:" + err);
  69. // render the error page
  70. res.status(err.status || 500);
  71. res.render('404', { title: '404 Error', description: 'PAGE NOT FOUND' });
  72. });
  73. // 启动服务器,监听6889端口
  74. const PORT = process.env.PORT || 6889;
  75. app.listen(PORT, () => {
  76. console.log(`Server is running on http://localhost:${PORT}`);
  77. });