1

My Angular 11 SSR is not showing dynamic data in page source. I have done all searching and implemented whatever I have found on the web. Can someone please help with this?

I have wrapped all client-side code inside isplatformbrowser. I also do not see any error logs in the console when I run ng run serve:ssr. I also added a resolver for some routes still there is no luck.

server.ts file

 import "zone.js/dist/zone-node";

import { ngExpressEngine } from "@nguniversal/express-engine";
import * as express from "express";
import { join } from "path";

import { AppServerModule } from "./src/main.server";
import { APP_BASE_HREF } from "@angular/common";
import { existsSync } from "fs";

import { NgxRequest, NgxResponse } from "@gorniv/ngx-universal";
import "localstorage-polyfill"
// The Express app is exported so that it can be used by serverless Functions.
export function app() {
  const server = express();
  const distFolder = join(process.cwd(), "dist/project/browser");
  const indexHtml = existsSync(join(distFolder, "index.original.html")) ? "index.original.html" : "index";
  global["localStorage"] = localStorage;

  // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
  server.engine("html", ngExpressEngine({
    bootstrap: AppServerModule,
  }));

  server.set("view engine", "html");
  server.set("views", distFolder);

  // Serve static files from /browser
  server.get("*.*", express.static(distFolder, {
    maxAge: "1y"
  }));

  // Do not serve the following routes via Universal
  server.get("/", (req, res) => {
    res.sendFile(join(distFolder, "index.html"));
  });

  // All regular routes use the Universal engine
  server.get("*", (req, res) => {
    res.render(indexHtml,
        {
          req: req,
          res: res,
          providers: [
            {
              provide: APP_BASE_HREF, useValue: req.baseUrl
            },
            {
              provide: NgxRequest, useValue: (req)
            },
            {
              provide: NgxResponse, useValue: (res)
            }
          ]
        });
  });

  return server;
}

function run() {
  const port = process.env.PORT || 5000;

  // Start up the Node server
  const server = app();
  server.listen(port, () => {
    console.log(`Node Express server listening on http://localhost:${port}`);
  });
}

// Webpack will replace 'require' with '__webpack_require__'
// '__non_webpack_require__' is a proxy to Node 'require'
// The below code is to ensure that the server is run only when not requiring the bundle.
declare const __non_webpack_require__: NodeRequire;
const mainModule = __non_webpack_require__.main;
const moduleFilename = mainModule && mainModule.filename || "";
if (moduleFilename === __filename || moduleFilename.includes("iisnode")) {
  run();
}

export * from "./src/main.server";
Ravi Badoni
  • 87
  • 2
  • 5

0 Answers0