Permalink
Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upimport 'zone.js/dist/zone-node'; | |
import { enableProdMode } from '@angular/core'; | |
// Express Engine | |
import { ngExpressEngine } from '@nguniversal/express-engine'; | |
// Import module map for lazy loading | |
import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader'; | |
import * as express from 'express'; | |
import { join } from 'path'; | |
// Faster server renders w/ Prod mode (dev mode never needed) | |
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('./server/main'); | |
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine) | |
app.engine('html', ngExpressEngine({ | |
bootstrap: AppServerModuleNgFactory, | |
providers: [ | |
provideModuleMap(LAZY_MODULE_MAP) | |
] | |
})); | |
app.set('view engine', 'html'); | |
app.set('views', join(DIST_FOLDER, 'browser')); | |
// Example Express Rest API endpoints | |
// app.get('/api/**', (req, res) => { }); | |
// Server static files from /browser | |
app.get('*.*', express.static(join(DIST_FOLDER, 'browser'), { | |
maxAge: '1y' | |
})); | |
// All regular routes use the Universal engine | |
app.get('*', (req, res) => { | |
res.render('index', { req }); | |
}); | |
// Start up the Node server | |
app.listen(PORT, () => { | |
console.log(`Node Express server listening on http://localhost:${PORT}`); | |
}); |