index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import express from 'express';
  2. import next from 'next';
  3. import compression from 'compression';
  4. import morgan from 'morgan';
  5. import nextI18NextMiddleware from 'next-i18next/middleware';
  6. import cookieParser from 'cookie-parser';
  7. import bodyParser from 'body-parser';
  8. import nextI18next from '../i18n';
  9. import customRoute from './route';
  10. import apiRoute from './api/index';
  11. const isDev = process.env.ENV !== 'production' && process.env.ENV !== 'preparing';
  12. const app = next({ dev: isDev });
  13. const handle = app.getRequestHandler();
  14. (async () => {
  15. await app.prepare();
  16. const server = express();
  17. server.use(compression());
  18. server.use(cookieParser());
  19. if (isDev) {
  20. server.use(morgan('short'));
  21. }
  22. server.use(bodyParser.json());
  23. server.use(bodyParser.urlencoded({ extended: true }));
  24. server.use('/api',apiRoute);
  25. server.use(nextI18NextMiddleware(nextI18next));
  26. customRoute(server, app, handle);
  27. server.get('*', (req, res) => {
  28. handle(req, res);
  29. });
  30. await server.listen(4000);
  31. /* eslint-disable no-console */
  32. if (isDev) {
  33. console.log('> Ready on http://localhost:4000');
  34. } else {
  35. console.log('> Ready on production');
  36. }
  37. })();