#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