問題
- DXPのページを閲覧していると、ブラウザのコンソールに以下のようなエラーが表示されることがある:
Error: Namespace "ClayTooltip.incrementaldom" already declared
これまでのところ、以下のケースで問題が確認されています:
ケース1: シングルページアプリケーションが有効 (javascript.single.page.application.enabled=truein portal-ext.properties)
事例2: クラスタリングが実現された環境である:- 2 Liferayノード
- 2データベース(各インスタンスに1つずつ)
- 1 ノード間をつなぐロードバランサー
Environment
- Liferay DXP 7.0+
解決策
- ケース1: 問題のあるページにつながるリンクがセナ無効になっていることを確認する: https://help.liferay.com/hc/en-us/articles/360030752391-Disabling-SPA#disabling-spa-for-an-individual-element または、ナビゲーション中にリソースがアンロードされないことを確認する: https://help.liferay.com/hc/en-us/articles/360030752411-Specifying-How-Resources-Are-Loaded-During-Navigation
-
ケース2: 複数のデータベースを持つクラスタ環境のタイプはサポートされていませんが、一時的な対処法として、 portal-ext.properties ファイルにこのプロパティを追加します:
javascript.single.page.application.enabled=false
このプロパティにより、ブラウザはナビゲーション毎に
ClayTooltipを新たに読み込み、問題を回避することができます。
追加情報
- https://help.liferay.com/hc/en-us/articles/360030752391-Disabling-SPA
- 複数のデータベースを持つタイプの「クラスタ」設定はサポートされていません(Liferayの要件は、クラスタ環境では常に1つのデータベースのみを持つことです)。 その場合、
ClayTooltipが複数回読み込まれるため、エラーが発生します。 - Liferay NPM Bundler with ReactJSとClay from Liferay Community Forums
- Reactポートレット内でClayコンポーネントを使用するにはどうすればよいですか? on GitHub
- Liferay DXP Clustering ガイド(Liferay Docsより)。