Nuxt3でのリンクURLの指定について

close up photo of programming of codes NuxtJS
Photo by luis gomes on Pexels.com
この記事は約3分で読めます。

Nuxt3でビルド後にimgやfaviconの画像が404になってしまい調べた時のメモです。

環境

  • macOS Catalina (intel cpu)
  • nuxt 3.6.2
  • Node.js 16.19.1

URLの指定箇所

主に以下のような箇所にURL指定した場合を考えます。

  • imgタグのsrc
  • 独自のコンポーネントの引数
  • nuxt.config.appのappプロパティに指定するfavicon
  • コンポーネント内でのuseHeadで指定するfavicon

ビルドするソースコード

以下ソースをビルドして確認します。presetはnitroとしています。

ビルド後のソース

.output/server/chunks/app/server.mjsを見てみましょう。関連範囲を抽出すると以下のようになっています。

imgのsrcの箇所

assets下のリソースはハッシュ値付きのファイルに、publicの下のものはそのままのファイル名となります。

また、__xxxAssetsURLは以下のようになっています。app.cdnURLが指定されていれば優先され、指定されていない場合はbaseURLを起点にパスが解決されています。

独自のコンポーネントの引数

予想通りかと思いますが、コンポーネントの引数なのでそのまま渡されています。

nuxt.config.appのappプロパティに指定するfavicon

予想通りかと思いますが、そのまま展開されています。

コンポーネント内でのuseHeadで指定するfavicon

予想通りかと思いますが、そのまま展開されています。

baseURLを指定した場合

サブパス指定でアプリケーションを展開したい場合、baseURLが使えます。しかし、app.headやuseHeadに指定したパスはそのまま展開されるので注意です。faviconは本来ドメインルートに配置するのでそういう構成であれば困ることはないかもしれません。

__publicAssetsURLで同等の処理にすることもできなくはなさそうです。

まとめ

srcなどのURLの指定は、ビルド後にどのようにパスが展開されるのか意識して書くことが大事です。

参考リンク

 

コメント

タイトルとURLをコピーしました