我已经花了17个小时试图让它发挥作用。我已经尝试了几乎所有可以找到的教程。
我有一个现有的Angular 4项目,可以在没有Universal的情况下完美地构建和运行。现有的项目甚至可以通过AOT罚款(这是另一个痛苦的运行)。
尝试运行服务器端渲染时遇到的当前错误是:
ERROR { ReferenceError: document is not defined
甚至需要一段时间才能达到这一点。有大量的@ types / node错误,但现在我已经编译了,页面将无法加载。
在对错误进行一些研究之后,ngx-bootstrap可能与它有关,但我不是100%肯定。
我正在将this tutorial与webpack version of universal结合使用,因为如果没有webpack,我的项目将因ngx-bootstrap而无法编译。
答案 0 :(得分:3)
在代码(或库中)的某处,有一个对document
对象的引用。虽然此对象在每个浏览器中定义,但它在服务器上不可用。
根据https://github.com/angular/universal#universal-gotchas
window
,document
,navigator
和其他浏览器类型 - 在服务器上不存在 - 因此使用它们或任何使用它们的库(例如jQuery)都不会工作
据我所知,除了重写代码以避免这些对象之外,没有简单的解决方案。