2017-07-29 64 views
0

我已经花了17个小时试图让这个工作。我已经尝试了几乎所有我能找到的教程。无法使Angular Universal与现有的CLI项目一起工作?

我有一个现有的Angular 4项目,可以构建和运行完美没有通用。现有的项目甚至可以通过AOT罚款(这是另一个痛苦的运行)。

的当前错误试图运行服务器端渲染,当我遇到的是:

ERROR { ReferenceError: document is not defined 

过了一段时间,甚至得到这一点。有@吨类型/节点错误,但现在我得到它编译,页面将无法加载。

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

我使用this tutorialwebpack version of universal结合使用,因为没有webpack,我的项目由于ngx-bootstrap而无法编译。

+0

当按照教程,具体哪一步你可以不完成?目前这个问题非常广泛。 – 0mpurdy

+0

您正在为Angular 4项目添加通用功能吗? [为什么?](https://github.com/angular/universal#current-status-universal-platform-api-has-been-merged-into-angular-40) –

+0

第一个教程不会工作,除非我执行第二个教程中显示的步骤。当我运行npm从第二个教程开始运行时,在编译软件包后出现错误 –

回答

2

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

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

windowdocumentnavigator和其他浏览器的类型 - 不存在于服务器上 - 这样使用它们,或者使用它们(jQuery的举例)将无法正常工作的任何库。

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

+1

这就是它!问题出在index.html中,有一个引用文档的js脚本。另外,我需要安装systemjs。如果有其他人遇到这个问题,请安装systemjs,并为文档搜索“文档”一词,并将其删除,直到问题消失。谢谢! –

相关问题