Commutty IT
sumiren
Follow
29か月前公開
・25か月前更新
・0 pv
・3 min read
Nuxt3 RCへのアップデートでハマったポイント4点
TypeScript
Nuxt3
SPA
Nuxt
SSR
※この記事は
Zenn
に移転しています。コメントなどあればZennにお願いします。
先日、1月頃にインストールしたNuxtのベータ版をRC版にアップデートしました。 その際、いくつかの破壊的変更でハマりました。
知っていればそんなに重たくなかったので、シェアします。
軽い順に説明します。
1. CLIの変更
nuxi build
や
nuxi dev
などのコマンドが、
nuxt build
や
nuxt dev
といったコマンドに変更となった。
これはドキュメント見つかりませんでした。 アップデート後にビルドコマンドが落ちるようになってしまい、最終的には空のnuxtプロジェクトを作り直して吐き出されるpacakge.jsonを見て、コマンド変更に気づきました。
2. NITRO_PRESETの指定方法の変更
NITROのプリセット名に見直しが入った。
1月時点より、NITROが提供してくれるプリセット数が大量に増えた。その際に、併せて修正された模様。
https://nitro.unjs.io/deploy/providers/aws.html
3. Runtime Configのインターフェース変更
Runtime Configの指定方法、取得方法が変わった。
https://v3.nuxtjs.org/guide/features/runtime-config/#exposing-runtime-config
指定方法について、publicRuntimeConfigやprivateRuntimeConfigではなく、runtimeConfig配下にまとめて記載する形となった。パブリックな設定はruntimeConfig.public配下に指定する。
取得方法についても、パブリックな設定はruntimeConfig.publicから取得する形となった。
後者はコードベース全体の変更になりうるので、少し重たいかもしれません。
4. Runtime Configへの環境変数の渡し方の変更
Runtime Configへの環境変数の渡し方が変わった。
https://v3.nuxtjs.org/guide/features/runtime-config/#exposing-runtime-config
前はprocess.envを直接渡していたが、Nuxtが決まった命名規則で環境変数を読み込み、Runtime Configを上書きする仕様に変わった。
上記のような実装で、環境変数経由でRuntime Configに直接値を渡すことができる。 パブリックでない設定は、PUBLIC_を抜くことで渡すことができる。
NUXT_PUBLIC_ENVIRONMENT=prod
また、開発環境(nuxt devコマンド)のみ、.envファイルから値を読んでくれる仕様がある。
注意点:process.envを渡そうとしても、本番環境では機能しない。開発環境では動いてしまうので要注意
こちらはソースコードの他に、本番環境の環境変数の指定方法も修正する必要がありますので、最も重たい変更かと思います。
追伸
個人的には、最後の問題が一番ハマってしまいました。ドキュメント更新が遅れていて、process.env渡しで動くと書いてあったためです。
しかも、開発環境(vite)では動くので、デプロイ先であるAWSやIaCも疑うことになり、余計に時間がかかりました。
nitroが吐き出すコードを読んだり紆余曲折ありつつ、最終的にはドキュメント修正にcontributeさせていただき、いい経験になりました。
https://github.com/nuxt/framework/pull/5569
今回は破壊的変更のリストやCHANGELOGが見つからなかったため、ハマりながら解決していきました。 もし変更の追跡方法を見つけた方がいらっしゃいましたら、シェアいただきたいです。
Discussion
コメントにはログインが必要です。