1

我已经投入了 17 个小时试图让它发挥作用。我已经尝试了几乎所有我能找到的教程。

我有一个现有的 Angular 4 项目,可以在没有 Universal 的情况下完美地构建和运行。现有项目甚至可以通过 AOT 正常运行(这是运行的另一个痛苦)。

我在尝试运行服务器端渲染时遇到的当前错误是:

ERROR { ReferenceError: document is not defined

甚至花了一段时间才达到这一点。有很多 @types/node 错误,但现在我可以编译它,页面将无法加载。

在对错误进行了一些研究之后,ngx-bootstrap 可能与它有关,但我不是 100% 确定。

我将本教程与通用的 webpack 版本结合使用,因为没有 webpack,由于 ngx-bootstrap,我的项目将无法编译。

4

1 回答 1

3

在您的代码(或库中)的某处,有对该document对象的引用。虽然此对象在每个浏览器中都定义了,但它在服务器上不可用。

根据https://github.com/angular/universal#universal-gotchas

window, document, navigator, 和其他浏览器类型 - 在服务器上不存在 - 因此使用它们或任何使用它们的库(例如 jQuery)将不起作用。

据我所知,除了重写代码以避免这些对象之外,没有简单的解决方案可以解决这个问题。

于 2017-07-29T22:24:08.790 回答