升级到 Angular 9 后,ReferenceError: window is not defined
运行时出现错误yarn serve:ssr
。
在我们的 Angular 应用程序中,我们使用 Domino 的技巧来模拟 SSR 的窗口(如在https://github.com/Angular-RU/angular-universal-starter/blob/master/server.ts#L21中)。
因此,在ng update
我在导入后添加了这些行之后server.ts
:
const distFolder = join(process.cwd(), 'dist/browser');
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
// Emulate browser APIs
const domino = require('domino');
const fs = require('fs');
const templateA = fs.readFileSync(join(distFolder, indexHtml)).toString();
const win = domino.createWindow(templateA);
win.Object = Object;
win.Math = Math;
global['window'] = win;
global['document'] = win.document;
但是,似乎设置global['window']
发生得太晚或永远不会发生。
您知道在哪里设置global['window']
以便角度组件和库可以在 SSR 中访问它吗?