index.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const config = require('./config');
  2. const {initLogger, getLog} = require('./core/getLogger');
  3. initLogger(config);
  4. const log = getLog();
  5. const express = require('express');
  6. const compression = require('compression');
  7. const SqliteConnectionPool = require('./core/SqliteConnectionPool');
  8. async function main() {
  9. const connPool = new SqliteConnectionPool(20, config);
  10. log('Opening database');
  11. await connPool.init();
  12. //servers
  13. for (let server of config.servers) {
  14. if (server.mode !== 'none') {
  15. const app = express();
  16. const serverConfig = Object.assign({}, config, server);
  17. let devModule = undefined;
  18. if (serverConfig.branch == 'development') {
  19. const devFileName = './dev.js'; //ignored by pkg -50Mb executable size
  20. devModule = require(devFileName);
  21. devModule.webpackDevMiddleware(app);
  22. }
  23. app.use(compression({ level: 1 }));
  24. app.use(express.json());
  25. if (devModule)
  26. devModule.logQueries(app);
  27. app.use(express.static(serverConfig.publicDir, { maxAge: '30d' }));
  28. require('./routes').initRoutes(app, connPool, serverConfig);
  29. if (devModule) {
  30. devModule.logErrors(app);
  31. } else {
  32. app.use(function(err, req, res, next) {// eslint-disable-line no-unused-vars
  33. log(LM_ERR, err.stack);
  34. res.sendStatus(500);
  35. });
  36. }
  37. app.listen(serverConfig.port, serverConfig.ip, function() {
  38. log(`Server-${serverConfig.serverName} is ready on ${serverConfig.ip}:${serverConfig.port}, mode: ${serverConfig.mode}`);
  39. });
  40. }
  41. }
  42. }
  43. main();