emahiro/b.log

Drastically Repeat Yourself !!!!

nitro: false の時は NITRO_PRESET=firebase はビルド時に指定しなくて良い

Overview

タイトルの通りなのですが、いつからか、 Nuxt3 の設定の nuxt.config.js で nitro:false && ssr: false の場合は firebase 向けのビルドをするときに必要だった NITRO_PRESET=firebase が必要なくなっていました。
考えると当たり前で SPA モードにするために ssr: false かつ nitro: false にしてるので NITRO の PRESET を指定する必要はないんですけどね。

NITRO_PREST=firebase とは?

以下で言及されています。Hosting 先を指定するときに使用します。

github.com

ちなみに以下の Zenn の記事で知りましたが、 nitro: {} の設定において preset に指定してもいいようです。

zenn.dev

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 を指定しない状態でビルドしてデプロイしたら上手く行きました。