Gatsby x Strapi — галерея изображений в порядке в dev, но ошибка ERR_CONNECTION_REFUSED в сборке

#graphql #gatsby #strapi

#graphql #gatsby #strapi

Вопрос:

У меня проблема, когда галерея из папки загрузки strapi загружается в dev полностью нормально, но как только она собрана, я получаю значок неработающей ссылки. Несмотря на то, что src полностью корректен. В журнале консоли я получаю «ERR_CONNECTION_REFUSED» для всех изображений.

Код —

 <div className="image-grid">
                {data.home.galleryImage.map((image, index, caption) => (
                      <div className="image-item" key={`${index}-cl`} class="imgcontt">
                       <img src={`http://167.99.84.214${image.url}`} alt="hh" class="galleryimg" thumbnail/>
                      </div>
                ))  
                }
                </div>
 

Запрос —

 export const query = graphql`
  query GetSingleHome($slug: String) {
 galleryImage {
      url
      caption
    }
}
`
 

Комментарии:

1. Используете ли вы Docker?

2. Нет, я должен быть?

Ответ №1:

Я думаю, что ваша проблема возникает из-за изменения порта между gatsby develop (port 8000 ) и gatsby build (port 9000 ). Поскольку порт запроса изменился, это вызывает ERR_CONNECTION_REFUSED из-за src <img> тега.

Я бы предложил использовать gatsby-image для обработки и обхода проблем такого типа. Ваш код должен выглядеть следующим образом:

 export const query = graphql`
  query GetSingleHome($slug: String) {
    galleryImage { 
      formats {
        medium
          childImageSharp {
           fluid(maxWidth: 400, maxHeight: 250) {
             ...GatsbyImageSharpFluid
          }
        }
      }
    }
  }
`
 

Примечание: я предполагаю, что вы правильно настроили filesystem ( gatsby-source-filesystem ), чтобы позволить Gatsby анализировать и компилировать ваши изображения. Если нет, пожалуйста, настройте его правильно. Измените maxWidth и maxHeight по своему усмотрению.

Теперь вы можете использовать:

  <div className="image-grid">
    {data.home.galleryImage.map((image, index, caption) => (
          <div className="image-item" key={`${index}-cl`} class="imgcontt">
           <Img fluid={image.formats.medium.childImageSharp.fluid} alt="hh" class="galleryimg" thumbnail/>
          </div>
    ))  
    }
    </div>
 

Управление изображениями с gatsby-image возможностью создания локальных узлов GraphQL для изображений, что позволяет избежать проблем с подключением.

Если вы не настроили свою файловую систему:

 {
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `pages`,
    path: `${__dirname}/src/images/`, //path to your images
  },
},
 

Комментарии:

1. Спасибо за ваш ответ! Я реализовал вышеуказанное, но получаю «ошибка Не удается запросить поле «childImageSharp» для типа «StrapiHomesGalleryImage» «. Я где-то читал, что это может быть связано с тем, что в galleryImage есть несколько изображений?

2. реализованные из graphgiql, они могут ссылаться на — galleryImage { formats { medium { childImageSharp { fluid { … GatsbyImageSharpFluid } } } }

3. как мне настроить ваш код выше, чтобы извлечь его из этого запроса?

4. Я обновил ответ. Это просто вложенный объект, поэтому вам нужно получить доступ к дочерним свойствам. То же самое для запроса GraphQL.

5. я так и думал, но он по-прежнему выдает ошибку — ошибка 194:11 Не удается запросить поле «childImageSharp» для типа «StrapiHomesGalleryImageFormats» graphql / template-strings