服务器端渲染Angular 4/5问题

时间:2018-02-01 08:02:32

标签: angular5 ssr

我正在处理角度5.我完成了我的应用程序并创建了一个构建并部署在服务器上,它工作正常。
但我在搜索引擎优化方面存在问题,即网页未在Google中编入索引。我使用了服务器端渲染并出现以下错误:

F:\universal-demo-v5>node dist/server.js F:\universal-demo-v5\dist\server.js:111436 })(window, document, 'Hammer');    ^ ReferenceError: window is not defined
    at Object.defineProperty.value (F:\universal-demo-v5\dist\server.js:111436:4)
    at __webpack_require__ (F:\universal-demo-v5\dist\server.js:20:30)
    at Object.hammerjs (F:\universal-demo-v5\dist\server.js:139493:18)
    at __webpack_require__ (F:\universal-demo-v5\dist\server.js:128177:30)
    at Object.../../../../ngx-carousel/src/ngx-carousel/ngx-carousel.component.js (F:\universal-demo-v5\dist\server.js:138668:67)
    at __webpack_require__ (F:\universal-demo-v5\dist\server.js:128177:30)
    at Object.../../../../ngx-carousel/src/ngx-carousel/ngx-carousel.component.ngfactory.js (F:\universal-demo-v5\dist\server.js:139254:10)
    at __webpack_require__ (F:\universal-demo-v5\dist\server.js:128177:30)
    at Object.../../../../../src/app/components/home/home.component.ngfactory.js (F:\universal-demo-v5\dist\server.js:129216:11)
    at __webpack_require__ (F:\universal-demo-v5\dist\server.js:128177:30)

1 个答案:

答案 0 :(得分:0)

这已经很晚了,但也许它会帮助你或将来的某个人。 这种情况发生在使用Angular Universal时,因为服务器端渲染没有“窗口”。使用,只有浏览器才能使用。

因此,当执行此代码时,服务器无法找到不存在的窗口。您可以通过删除hammerjs来解决这个问题(这不是必需的,只是为材料2和类似的UI添加生活质量)

或者您可以在此处尝试此修复:https://github.com/angular/universal/issues/830

其中涉及在server.ts代码中定义窗口,因此在运行时它可以正常工作。