2017-07-29 7 views
0

私はこれを稼働させるために17時間をかけました。私は見つけることができるすべてのチュートリアルを試しました。Angular Universalを既存のCLIプロジェクトで使用することができませんか?

私は、ユニバーサルなしで完全に構築して実行できる既存のAngular 4プロジェクトを持っています。既存のプロジェクトはAOTの罰金(これはもう一つの苦痛となっていました)を実行することさえできます。

サーバー側のレンダリングを実行しようとしたとき、私は遭遇した現在のエラーは、次のとおりです。

ERROR { ReferenceError: document is not defined 

それも、このポイントを取得するためにしばらく時間がかかりました。 @種類/ノードのエラーがたくさんありましたが、コンパイルするとページがロードされません。

エラーについていくつかの調査を行った後、ngx-bootstrapに何か関係がある可能性がありますが、100%確実ではありません。

webpack version of universalと組み合わせてthis tutorialを使用していますが、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

最初のチュートリアルは、手順は2番目のチュートリアルに示されています。 2回目のチュートリアルからnpm run startを実行すると、バンドルがコンパイルされた後にエラーが表示されます –

答えて

2

コード(またはライブラリ)のどこかに、documentオブジェクトへの参照があります。このオブジェクトはすべてのブラウザで定義されていますが、サーバー上では使用できません。

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

windowdocumentnavigatorによると、他のブラウザの種類 - サーバー上に存在していない - それらを使用するので、または(例えばjQueryの)それらを使用するすべてのライブラリは動作しません。

私が知る限り、これらのオブジェクトを避けるためにコードを書き換える以外には、この問題を簡単に解決する方法はありません。

+1

これはそれでした!問題はindex.htmlにあり、ドキュメントを参照するjsスクリプトがありました。さらに、私はsystemjsをインストールする必要がありました。他の誰かがこの問題を抱えている場合は、systemjsをインストールし、 "文書"という用語のフォルダ検索を行い、問題がなくなるまでそれぞれを削除してください。ありがとう! –

関連する問題