Gatsby.js + A-FrameでSSGしつつ3Dオブジェクトをレンダリングしてみる その3
これ(https://coneta.jp/article/show/2997)の続き。
6. デプロイしてみる
適当なサーバを用意してデプロイしてみる。
方法は簡単で、build時にpublic/の中に色々アウトプットされるので丸ごとWebサーバに配置する。
すると、A-Frame自体は動作するが動画ファイルが読み込まれず、読み込み中のまま。
production-app.js:170 page resources for /subDir/ not found. Not rendering React
Uncaught (in promise) TypeError: l[e] is not a constructor
at HTMLElement.value (aframe-master.js:71943)
at HTMLElement.value (aframe-master.js:71922)
at HTMLElement.value (aframe-master.js:71882)
at HTMLElement.value (aframe-master.js:70372)
...
といったエラーが表示される。
正直良くわからなかったが、サブディレクトリにデプロイしてる関連のエラーではなくやはりA-Frameの読み込み不良と解釈。
散々悩んだ結果、以下で解決した。
解決手順
npm install @mui/material
でMaterial UIをインストールimport { NoSsr } from "@mui/base"
して、該当のA-Frame要素部をで囲む
これで解決。
NoSsrで囲った部分はサーバサイドではレンダリングされない。
フロントでのレンダリングでエラーになってて、なぜこの対応で解決するのかは分からないが、一旦Webサーバで問題なくA-Frameを使えるようになった。
エラーの根本的な原因解明は、Gatsbyのレンダリングシステムをちゃんと理解しないと分からないかな。。