Я думаю, что для решения вашей проблемы требуется немного больше информации, ничего из перечисленного вами не выглядит само по себе неправильным.Однако так много людей были сбиты с толку обработкой изображения в Гэтсби, что я пишу контрольный список.Он должен быть общим, но я думаю, что 5, 8, 9, 12 могут помочь вам найти проблему.
Использование изображения с gatsby-transformer-remark
+ gatsby-transformer-sharp
устранение неисправностей
Настройка
- Есть ли вообще ошибка?Иногда Гэтсби все равно успешно компилируется, несмотря на что-то не так.Проверьте консоль на наличие всего красного ...
- Вы перезапустили
gatsby
, т.е. включили и выключили снова?Попробуйте удалить кэш и общую папку (.cache
и public
), если вы подозреваете, что с ними что-то не так. - Вы указали папку с изображениями или любую из ее родительских папок в
gatsby-source-filesystem
? - В вашем frontmatter, путь к изображению относительно самого файла уценки?т.е. путь начинается с точки
./relative/path/to/image.png
- Есть ли во всей уценке поле
hero
во frontmatter?Если у файла нет поля героя, это будет null
. - Если путь к изображению в frontmatter не является относительным или не ссылается на файл, он будет рассматриваться как обычныйстрока.
Запрос и фрагменты
Ваш запрос работает?Проверьте ваш запрос в
http://localhost:8000/___graphql. Убедитесь, что поле изображения отображается как узел файла.Попробуйте что-нибудь простое, например
query {
allMarkdownRemark {
frontmatter {
title
hero {
id
name <-- just enough to know the file exists
}
}
}
}
Если ваш hero
отображается как строка, что-то не так, проверьте настройку еще раз.
Вы используете фрагменты?В настоящее время фрагменты не могут быть протестированы в инструменте graphiql, поэтому вам может потребоваться найти определение этого фрагмента и проверить его вручную.Вот список значений по умолчанию, которые поставляются с gatsby-transformer-sharp
и их определений.
Если вы используете пользовательский фрагмент, обязательно определите и экспортируйтеэто где-то.
Использование
Если изображение не отображается в браузере, проверьте и попробуйте найти то, что отображается вместо вашего изображения. Используете ли вы
gatsby-image
?Если это так, убедитесь, что вы передаете что-то, с чем он может работать. Убедитесь, что ваш компонент изображения получает то, что должен.Если ваш компонент ожидает путь, не передавайте объект, как результат фрагмента.
Некоторые примечания
gatsby-remark-images
обрабатывают толькоотносительные ссылки в уцененном изображении & html <img>
, поэтому, если ваше изображение находится во frontmatter, оно ничего не сделает.