1. ホーム
  2. favicon

[解決済み] Next.jsの静的サイトにファビコンを追加する方法は?

2022-02-09 16:32:21

質問内容

Next.jsの静的サイトにファビコンを追加しようとしているのですが、うまくいきません。

のコンポーネントでドキュメントをカスタマイズしてみました。 'next/document' https://nextjs.org/docs/#custom-document

favicon.ico ファイルへの直接リンクは、ファイルがビルドに含まれていないため機能せず、href は更新されず /_next/static/...

画像をインポートしてリンクの href に追加してもうまくいきません (コメントアウトされた行を参照)。

import React from 'react';
import Document, { Html, Head, Main, NextScript } from 'next/document';

// import favicon from '../data/imageExports';

export default class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx);
    return { ...initialProps };
  }

  render() {
    return (
      <Html>
        <Head>
          {/* <link rel="shortcut icon" href={favicon} /> */}
          <link rel="shortcut icon" href="../images/icons/favicon.ico" />
        </Head>
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    );
  }
}

ファビコンリンクは追加されましたが、表示されません。 ファイルをインポートすると、うまくいくと思うのですが、単に <link rel="shortcut icon" href="[object Object]"> のリンクが表示されます。

まだやっている人はいますか?

解決方法は?

  1. を作成します。 /static フォルダをプロジェクトルートに作成します。これは、静的エクスポートフォルダに追加されます。
  2. ファビコンファイルを /static フォルダーに格納します。
  3. 追加 _document.js/pages/ フォルダを ドキュメント (nextjs.org) または ドキュメント (github.com) .
  4. 追加 <link rel="shortcut icon" href="/static/favicon.ico" /> を頭につける。
  5. npm run build && npm run export

P.S. ありがとうございました。 前回の回答 を削除しました。うまくいきました!


編集:もう一つの方法は、次のようにすることです。 インポートヘッド をルートレイアウトに追加し、そこにリンクを追加してください。に追加されたものはすべて ヘッド は、ドキュメントのheadタグに挿入されます。

import Head from 'next/head';

const Page = (props) => (
  <div>
    <Head>
      <link rel="shortcut icon" href="/static/favicon.ico" />
    </Head>
    // Other layout/components
  </div>
);

export default Page;

更新情報 :

静的ディレクトリは廃止され、公開ディレクトリが採用されました。 ドク

というわけで、コードは次のようになります。

import Head from 'next/head';

const Page = (props) => (
  <div>
    <Head>
      <link rel="shortcut icon" href="/favicon.ico" />
    </Head>
    // Other layout/components
  </div>
);