This repository was archived by the owner on Feb 2, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.ts
More file actions
58 lines (50 loc) · 1.74 KB
/
server.ts
File metadata and controls
58 lines (50 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// These are important and needed before anything else
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import {enableProdMode} from '@angular/core';
import * as express from 'express';
import compression from 'compression';
import {join} from 'path';
// Express Engine
import {ngExpressEngine} from '@nguniversal/express-engine';
// Import module map for lazy loading
import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader';
// Polyfills required for Firebase
(global as any).WebSocket = require('ws');
(global as any).XMLHttpRequest = require('xhr2');
// Faster server renders w/ Prod mode (dev mode never needed)
enableProdMode();
const app = express();
app.use(compression());
const PORT = process.env.PORT || 80;
const DIST_FOLDER = join(process.cwd(), 'dist');
const routes = [
{path: '/fr-fr/*', view: 'fr-fr/index', bundle: require('./dist/server/fr-fr/main')},
{path: '/en-us/*', view: 'en-us/index', bundle: require('./dist/server/en-us/main')},
{path: '/*', view: 'en-us/index', bundle: require('./dist/server/en-us/main')},
];
// Load your engine
app.engine('html', (filePath, options, callback) => {
options.engine(
filePath,
{req: options.req, res: options.res},
callback
);
});
app.set('view engine', 'html');
app.set('views', join(DIST_FOLDER, 'website'));
app.get('*.*', express.static(join(DIST_FOLDER, 'website')));
// Handle routes
routes.forEach((route) => {
app.get(route.path, (req, res) => {
res.render(route.view, {
req, res, engine: ngExpressEngine({
bootstrap: route.bundle.AppServerModuleNgFactory,
providers: [provideModuleMap(route.bundle.LAZY_MODULE_MAP)]
})
});
});
});
app.listen(PORT, () => {
console.log(`Node server listening on port ${PORT}`);
});