2017-07-29 75 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,併爲文檔搜索「文檔」一詞,並將其刪除,直到問題消失。謝謝! –

相關問題