无法让 Angular Universal 与现有的 CLI 项目一起工作?

Can't get Angular Universal to work with existing CLI project?

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

我有一个现有的 Angular 4 项目可以构建并且 运行 完全没有通用。现有项目甚至可以 运行 通过 AOT 正常(这是获得 运行ning 的另一个痛苦)。

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

ERROR { ReferenceError: document is not defined

甚至达到这一点也花了一些时间。有很多@types/node 错误,但现在我已经编译了它,页面不会加载。

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

我正在使用 this tutorial in combination with the webpack version of universal 因为如果没有 webpack 我的项目将无法编译,因为 ngx-bootstrap.

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

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

window, document, navigator, and other browser types - do not exist on the server - so using them, or any library that uses them (jQuery for example) will not work.

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