角 6 | 服务器端渲染:问题“窗口未定义”

Mon*_*a D 0 angular-seo server-side-rendering angular angular6

我已将我的应用程序从 angular 版本 5 更新到最新版本。这是详细信息:

  Angular CLI: 6.2.1
  Node: 8.12.0
  OS: win32 x64
  Angular: 6.1.6
Run Code Online (Sandbox Code Playgroud)

我也使用 这个:ng-toolkit-universal 来实现服务器端渲染。我能够使用命令“ npm run build:prod ”构建应用程序,但在运行命令面临以下问题:“n pm run server ”:

在此处输入图片说明

任何人都可以请帮助或建议一些相同的解决方案。

提前致谢!

小智 7

假设您已经完成了 angular 通用的 SSR。导入后将以下代码放入 server.ts 中。构建并运行。

const domino = require("domino");
const fs = require("fs");
const path = require("path");
const templateA = fs
  .readFileSync(path.join("dist/browser", "index.html"))
  .toString();
const win = domino.createWindow(templateA);
win.Object = Object;
win.Math = Math;

global["window"] = win;
global["document"] = win.document;
global["branch"] = null;
global["object"] = win.object;
global['HTMLElement'] = win.HTMLElement;
global['navigator'] = win.navigator;
global['localStorage'] = localStorage;
Run Code Online (Sandbox Code Playgroud)