盖茨比没有加载网站图标

Posted

技术标签:

【中文标题】盖茨比没有加载网站图标【英文标题】:Gatsby not loading favicons 【发布时间】:2020-06-03 14:02:24 【问题描述】:

我们使用gatsby-plugin-manifest 来生成清单文件并导入我们的网站图标。一切都在我们的本地开发服务器上正常运行,就像加载了图标一样。

但是,当我们构建网站的静态 html 并在我们的服务器上运行此文件时,所有图标都会出现 404 错误:/icons/icon-48x48.png?v=0a830f59a4abe247647ea123ff4fc96e'. It looks like our service worker can not resolve the URL of/icons`。当我们将图标目录移动到 gatsby 的静态目录时,一切正常。

我是否遗漏了 gatsby-config.js 文件中的某些内容?这是我们用于gatsby-plugin-manifest 的部分。

resolve: `gatsby-plugin-manifest`,
  options: 
    name: "Keytoe",
    short_name: "Keytoe",
    start_url: "/",
    background_color: "#23e197",
    theme_color: "#23e197",
    // Enables "Add to Homescreen" prompt and disables browser UI (including back button)
    // see https://developers.google.com/web/fundamentals/web-app-manifest/#display
    display: "standalone",
    icon: "src/assets/logo/favicon.png", // This path is relative to the root of the site.
    // An optional attribute which provides support for CORS check.
    // If you do not provide a crossOrigin option, it will skip CORS for manifest.
    // Any invalid keyword or empty string defaults to `anonymous`
    crossOrigin: `use-credentials`,
  ,
,

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,幸运的是设法解决了这个问题。您是否正在运行 Apache 作为您的 Web 服务器?因为这就是我的问题所在。

Apache 有自己的/icons 目录,建议不要将这个名称的目录放在您的 Web 项目的根目录,因为 Apache 将为位于您的/icons 目录中的任何文件返回 404。这是导致正确答案的博客文章: https://electrictoolbox.com/apache-icons-directory/

因为我不想编辑任何服务器配置来解决问题,所以我选择从common.js 复制gatsby-plugin-manifest 的默认图标定义。 https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-manifest/src/common.js

并将所有src: `icons/...` 替换为src: `favicons/...`。现在我的 Apache 很开心,我也很开心。

这是我的gatsby-config.js 的摘录:

      ...
     ,
      resolve: `gatsby-plugin-manifest`,
      options: 
        name: `domain.com`,
        short_name: `domain.com`,
        start_url: `/`,
        background_color: `#ffffff`,
        theme_color: `#1abc9c`,
        display: `minimal-ui`,
        icon: `src/assets/favicon.png`,
        icons: [
          
            src: `favicons/icon-48x48.png`,
            sizes: `48x48`,
            type: `image/png`,
          ,
          
            src: `favicons/icon-72x72.png`,
            sizes: `72x72`,
            type: `image/png`,
          ,
          ...
        ]
        ...

【讨论】:

是的,这似乎可以解决问题。我尝试重写服务器配置,但是当我们使用 Directadmin 时,这非常困难。所以我听从了你的建议。感谢您的帮助!

以上是关于盖茨比没有加载网站图标的主要内容,如果未能解决你的问题,请参考以下文章

为现代 Web 浏览器加载网站图标的最佳方式是啥?

为 javascript 运行本地服务器,但仍无法加载网站图标图像

有没有啥好的设计图标素材网站?

无法读取未定义的属性(读取“道具”)-盖茨比网站上的富文本

盖茨比没有找到graphql片段

为啥我的 Vue.js 项目没有显示我的网站图标?