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