ReferenceError:未定义窗口Angular Universal

时间:2020-07-23 06:38:41

标签: node.js angular typescript server-side-rendering angular-universal

我正在使用Angular 10,并试图在我的项目中实现SSR。

运行npm run serve:ssr时出现以下错误

ReferenceError: window is not defined

当我用Google搜索时,他们建议添加domino

下面是我的server.ts

....
const scripts = fs.readFileSync('dist/asfc-web/browser/index.html').toString();

const window = domino.createWindow(scripts);
global['window'] = window;
global['document'] = window.document;

....

仍然出现相同的错误,请指导我如何解决此问题。

2 个答案:

答案 0 :(得分:0)

这是简单的解决方法,

我已经在AppServerModule之后导入了global['window']

global['window'] = window;
global['document'] = window.document;

import { AppServerModule } from '../../projects/asfc-web/src/main.server';

答案 1 :(得分:0)

你可以使用 Renderer2 来监听这个。

import { Renderer2 } from '@angular/core';
 constructor(private renderer2: Renderer2) {
     ...
 }
this.renderer2.listen('window', 'load', event => {    
   this.innerWidth = event.currentTarget.innerWidth;
   console.log(this.innerWidth);
});