为什么我的图标在我的下一个 js 应用程序中不起作用?

atm*_*ens 6 html favicon reactjs next.js vercel

出于某种原因,我的图标无法正常工作。

我将 favicon 保存为 favicon.ico 在 /public 目录中,并在<Head>我的页面(位于 /pages 目录中)中引用它,但无济于事。

任何人都可以帮忙吗?

——

这是我的 index.js 代码:

  <Head>
      <title>Create Next App</title>
      <link rel="icon" href="/favicon.ico" />
Run Code Online (Sandbox Code Playgroud)

dir/pages/index.js
dir/public/favicon.ico
Run Code Online (Sandbox Code Playgroud)

inf*_*ing 55

将图标放在/image目录内的一个目录中/public,然后将下面的代码放入您的_app.js

<Head>
          <link rel="shortcut icon" href="/images/favicon.ico" />
          <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png" />
          <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png"/>
          <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png"/>
</Head>
Run Code Online (Sandbox Code Playgroud)

  • 为什么这是必要的?它解决了我的问题,但是我注意到 Next.js 样板项目没有这样做,而且它似乎在那里工作...... (8认同)
  • 我确认这一点。 (6认同)

joe*_*une 18

该图像可能.ico是错误创建的 - 可能是从.png. 这将导致图像在浏览器和其他地方可见,但无法用作网站图标

为了排除故障,请尝试使用 a.png代替.ico,看看问题是否仍然存在。如果这解决了您的问题,请考虑使用专门针对favicons 的转换器,即https://favicon.io/favicon-converter/


就我而言,该文件位于正确的位置 ( /public/favicon.ico),被正确引用 ( href="/favicon.ico"),并且在访问 时提供服务http://localhost:3000/favicon.ico,但在我重新转换它之前它没有显示在浏览器选项卡中。


小智 14

我面临着和你完全相同的问题。看来有必要将图像文件放在/public/images/中

一旦我完成此操作,它就会正常工作。


小智 9

仅当您在使用 next basePath时遇到问题时才有帮助:

我遇到了一个问题,我的网站图标没有显示。basePath: '/some-base-path'就我而言,这是因为我在下一个配置中使用。当您添加时,basePath它会更改静态资源的路径。

/test示例:带有图像的 basePathpublic/favicon.ico可以在以下位置引用/test/public/favicon.ico

调试说明:我还必须清除缓存才能看到更改(或尝试隐身)。