"use strict"; require("zone.js/dist/zone-node"); require("reflect-metadata"); const { enableProdMode } = require('@angular/core'); const express = require('express'); const { join } = require('path'); enableProdMode(); // Express server const app = express(); const PORT = process.env.PORT || 4000; const DIST_FOLDER = join(process.cwd(), 'dist'); // * NOTE :: leave this as require() since this file is built Dynamically from webpack const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main.bundle'); // Express Engine const { ngExpressEngine } = require("@nguniversal/express-engine"); // Import module map for lazy loading const { provideModuleMap } = require("@nguniversal/module-map-ngfactory-loader"); app.engine('html', ngExpressEngine({ bootstrap: AppServerModuleNgFactory, providers: [ provideModuleMap(LAZY_MODULE_MAP) ] })); app.set('view engine', 'html'); app.set('views', join(DIST_FOLDER, 'browser')); // Server static files from /browser app.get('*.*', express.static(join(DIST_FOLDER, 'browser'))); // All regular routes use the Universal engine app.get('*', function (req, res) { res.render(join(DIST_FOLDER, 'browser', 'index.html'), { req: req }); }); // Start up the Node server app.listen(PORT, function () { console.log("Node server listening on http://localhost:" + PORT); });