Гэтсби - перезапись изображений - PullRequest
0 голосов
/ 28 декабря 2018

Я делаю сайт, используя gatsby CMS, но теперь я столкнулся с проблемой, которую не знаю, как решить.У меня есть страницы проекта, которые я создаю из файлов уценки в gatsby-node.Он работает как надо, создает страницы с правильными слагами и так далее.Теперь проблема в том, что я создал две страницы проекта, на обеих из них есть изображения, которые называются одинаковыми, но находятся в разных папках: в projects/foo.md

---
templateKey: project-page
headerImage: /img/projects/foo/Header.jpg 
---

, затем в projects/bar.md

---
templateKey: project-page
headerImage: /img/projects/bar/Header.jpg 
---

Затем в шаблоне я называю

<div className="hero"
  style={{ backgroundImage: `url(${data.headerImage.publicURL})` }}
>

. Это хорошо работает для проекта foo.Но для bar один он все еще показывает то же изображение, что и в foo, для обоих это style='background-image: url("/static/Header-920eee5baf94303a7a172f4ccef3b60b.jpg");'.Я понятия не имею, что происходит.

Если это поможет, содержание моего gatsby-node.js будет:

const _ = require('lodash')
const path = require('path')
const { createFilePath } = require('gatsby-source-filesystem')
const { fmImagesToRelative } = require('gatsby-remark-relative-images')

exports.createPages = ({ actions, graphql }) => {
  const { createPage } = actions

  return graphql(`
    {
      allMarkdownRemark(limit: 1000) {
        edges {
          node {
            id
            fields {
              slug
            }
            frontmatter {
              templateKey
              headerImage {
                publicURL
              }
            }
          }
        }
      }
    }
  `).then(result => {
    if (result.errors) {
      result.errors.forEach(e => console.error(e.toString()))
      return Promise.reject(result.errors)
    }

    const projects = result.data.allMarkdownRemark.edges

    projects.forEach(edge => {
      const id = edge.node.id
      createPage({
        path: edge.node.fields.slug,
        tags: edge.node.frontmatter.tags,
        component: path.resolve(
          `src/templates/${String(edge.node.frontmatter.templateKey)}.jsx`
        ),
        // additional data can be passed via context
        context: {
          data: edge.node.frontmatter
        },
      })
    })

  })
}

exports.onCreateNode = ({ node, actions, getNode }) => {
  const { createNodeField } = actions
  fmImagesToRelative(node) // convert image paths for gatsby images

  if (node.internal.type === `MarkdownRemark`) {
    const value = createFilePath({ node, getNode })
    createNodeField({
      name: `slug`,
      node,
      value,
    })
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...