/* tslint:disable:no-console */ import 'reflect-metadata'; import 'zone.js/dist/zone-node'; import {enableProdMode} from '@angular/core'; import {ngExpressEngine} from '@nguniversal/express-engine'; import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader'; import * as express from 'express'; import {join} from 'path'; enableProdMode(); const app = express(); const PORT = process.env.PORT || 3333; const DIST_FOLDER = join(process.cwd(), 'dist'); const DEMO_FOLDER = join(DIST_FOLDER, 'demo', 'browser'); const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('../server/main'); app.engine( 'html', ngExpressEngine({ bootstrap: AppServerModuleNgFactory, providers: [provideModuleMap(LAZY_MODULE_MAP)], }), ); app.set('view engine', 'html'); app.set('views', DEMO_FOLDER); // Example Express Rest API endpoints // app.get('/api/**', (req, res) => { }); // Server static files from /browser app.get( '*.*', express.static(DEMO_FOLDER, { maxAge: '1y', }), ); // All regular routes use the Universal engine app.get('*', (req, res) => { // Add information on current browser and location addToGlobal( 'location', new URL(`${req.protocol}://${req.get('host')}${req.originalUrl}`), ); addToGlobal('navigator', {userAgent: req.get('user-agent')}); res.render('index', {req}); }); // Start up the Node server app.listen(PORT, () => { console.log(`Node Express server listening on http://localhost:${PORT}`); }); function addToGlobal(key: string, value: any) { (global as any)[key] = value; }