Created
December 7, 2018 20:46
-
-
Save whisher/2255bf0eab5669077c4c27549f0f6a4e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// These are important and needed before anything else | |
import 'zone.js/dist/zone-node'; | |
import 'reflect-metadata'; | |
import { join } from 'path'; | |
import * as express from 'express'; | |
import * as cookieParser from 'cookie-parser'; | |
import * as helmet from 'helmet'; | |
import { enableProdMode } from '@angular/core'; | |
// Faster server renders w/ Prod mode (dev mode never needed) | |
enableProdMode(); | |
// Express server | |
const app = express(); | |
// | |
app.use(cookieParser()); | |
// Helmet | |
app.use(helmet()); | |
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'); | |
// Express Engine | |
import { ngExpressEngine } from '@nguniversal/express-engine'; | |
// Import module map for lazy loading | |
import { provideModuleMap } from '@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')); | |
// TODO: implement data requests securely | |
app.get('/api/*', (req, res) => { | |
res.status(404).send('data requests are not supported'); | |
}); | |
// Server static files from /browser | |
app.get('*.*', express.static(join(DIST_FOLDER, 'browser'))); | |
// All regular routes use the Universal engine | |
app.get('*', (req, res) => { | |
res.cookie('XSRF-TOKEN', 'uelatoken12345', { maxAge: 900000, httpOnly: false }); | |
res.render('index', { req }); | |
}); | |
// Start up the Node server | |
app.listen(PORT, () => { | |
console.log(`Node server listening on http://localhost:${PORT}`); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment