Closed xxyyzz2050 closed 5 years ago
here is my full server.ts file (angular universal with express)
const DIST_FOLDER = join(process.cwd(), "dist/browser");
//https://mdbootstrap.com/support/angular/angular-universal-with-mdboostrap-not-working/
import { readFileSync } from "fs";
const domino = require("domino"); //Server-side DOM implementation based on Mozilla's dom.js
const template = readFileSync(join(DIST_FOLDER, "/index.html")).toString();
const win = domino.createWindow(template);
global["window"] = win;
global["Node"] = win.Node;
global["navigator"] = win.navigator;
global["Event"] = win.Event;
global["Event"]["prototype"] = win.Event.prototype;
global["document"] = win.document;
//-------------------
import "zone.js/dist/zone-node";
import "reflect-metadata";
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;
// * NOTE :: leave this as require() since this file is built Dynamically from webpack
const {
AppServerModuleNgFactory,
LAZY_MODULE_MAP
} = require("./dist/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", DIST_FOLDER);
// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Server static files from /browser
app.get(
"*.*",
express.static(DIST_FOLDER, {
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}`);
});
You're actually using angular here, express is just the web server. You should file this bug over in the angular project.
I run my server using 'express', so I already set the template with express:
and then I create the template again with domino to implement the DOM
is it ok to create the template twice? once with express and another with domino?