xref: /expo/apps/router-e2e/__e2e__/server/express.js (revision 46f023fa)
1#!/usr/bin/env node
2
3const path = require('path');
4const { createRequestHandler } = require('@expo/server/build/vendor/express');
5
6const express = require('express');
7const compression = require('compression');
8const morgan = require('morgan');
9
10const BUILD_DIR = path.join(__dirname, '../../dist-server');
11
12const app = express();
13
14app.use(compression());
15
16// http://expressjs.com/en/advanced/best-practice-security.html#at-a-minimum-disable-x-powered-by-header
17app.disable('x-powered-by');
18
19process.env.NODE_ENV = 'production';
20
21app.use(
22  // Prevent access to expo functions as these may
23  // contain sensitive information.
24  [/^\/_expo\/functions($|\/)/, '/'],
25  express.static(BUILD_DIR, {
26    maxAge: '1h',
27    extensions: ['html'],
28  })
29);
30
31app.use(morgan('tiny'));
32
33app.all(
34  '*',
35  createRequestHandler({
36    build: BUILD_DIR,
37  })
38);
39const port = process.env.PORT || 3000;
40
41app.listen(port, () => {
42  console.log(`Express server listening on port ${port}`);
43});
44