Overview
タイトルの通りなのですが、いつからか、 Nuxt3 の設定の nuxt.config.js で nitro:false
&& ssr: false
の場合は firebase 向けのビルドをするときに必要だった NITRO_PRESET=firebase
が必要なくなっていました。
考えると当たり前で SPA モードにするために ssr: false
かつ nitro: false
にしてるので NITRO の PRESET を指定する必要はないんですけどね。
NITRO_PREST=firebase とは?
以下で言及されています。Hosting 先を指定するときに使用します。
ちなみに以下の Zenn の記事で知りましたが、 nitro: {}
の設定において preset
に指定してもいいようです。
PRESET の指定でビルド結果が変わる
前提なのですが、そもそもどうして気付いたかというと、たまたま Nuxt3 の RC のバージョンを上げたタイミングで、Firebase Hosting にデプロイしたアプリケーションが Firebase の 404 を返すようになって気づきました。
挙動を調べると NITRO_PRESET を指定してるケースでは nitro: false
が効かず、nitro: true
の時と同じビルド結果になる、ということがわかりました( .output/public
配下に html が生成されない)
html が生成されていなかったために、Hosting にデプロイしても HTML が見つからずに 404 になっていました。
※ 本来、.output/public
配下に HTML が生成されない(= SSR モード)の時は Cloud Functions などで node のランタイムを動作させておく必要があります。
解決策
nitro: false
の時は NITRO の PRESET を指定しない状態でビルドしてデプロイしたら上手く行きました。