Пользовательские переменные frontmatter с Markdown Remark в Gatsby.js

Я строю веб-сайт, используя Gatsbyjs и NetlifyCMS. Я начал использовать этот стартер https://github.com/AustinGreen/gatsby-starter-netlify-cms и сейчас пытаюсь настроить его.

Я хочу использовать пользовательские переменные в frontmatter файла уценки следующим образом:

---
templateKey: mirror
nazev: Černobílá
title: Black and White
cena: '2700'
price: '108'
thumbnail: /img/img_1659.jpeg
---

Я хочу получить доступ к этим данным с помощью GraphQL. Я использую gatsby-source-filesystem и gatsby-transform-notes. Это мой запрос:

  {
  allMarkdownRemark {
    edges {
      node {
        frontmatter {
          templateKey
          nazev
          title
          cena
          price
        }
      }
    }
  }
}

Я не могу заставить GraphQL читать мои собственные переменные, он распознает только title а также templateKey (те, что уже использовались в стартере). Я получаю эту ошибку:

{
  "errors": [
    {
      "message": "Cannot query field \"nazev\" on type \"frontmatter_2\".",
      "locations": [
        {
          "line": 7,
          "column": 11
        }
      ]
    },
    {
      "message": "Cannot query field \"cena\" on type \"frontmatter_2\".",
      "locations": [
        {
          "line": 9,
          "column": 11
        }
      ]
    },
    {
      "message": "Cannot query field \"price\" on type \"frontmatter_2\". Did you mean \"pricing\"?",
      "locations": [
        {
          "line": 10,
          "column": 11
        }
      ]
    }
  ]
}

Я искал несколько дней, но ничего не нашел. Кто-нибудь поможет мне, пожалуйста?

1 ответ

Решение

Решено!

Проблема заключалась в том, что недавно добавленные свойства в frontmatter моего файла уценки не отображались в моем GraphQL.

Все, что мне нужно было сделать, это перезапустить сервер с помощью gatsby-velop.

Некоторая справочная информация, которая может помочь вам предвидеть подобные проблемы в будущем

gatsby-transformer-remark и все другие плагины, зависящие от запросов GraphQL, могут читать только недавно добавленные переменные при выполнении запросов GraphQL.

В Gatsby запросы GraphQL запускаются ОДИН РАЗ при запуске вашего сервера разработки. Запросы не будут обновляться, если вы измените код, покаgatsby developвсе еще жив. Вы можете снова запустить запросы GraphQL, перезапустивgatsby develop.

В документации Gatsby есть собственная запись Gatsby Build Process, которая показывает, когда именно выполняются запросы:

success open and validate gatsby-configs - 0.051 s
// ...
success onPostBootstrap - 0.130 s
⠀
info bootstrap finished - 3.674 s
⠀
success run static queries - 0.057 s — 3/3 89.08 queries/second  // GraphQL queries here
success run page queries - 0.033 s — 5/5 347.81 queries/second   // GraphQL queries here
success start webpack server - 1.707 s — 1/1 6.06 pages/second

Как правило, которое я усвоил на собственном опыте, если вам интересно, почему изменения вашего кода не являются горячей перезагрузкой

  • обновите браузер.
  • Если это не сработает, перезапустите gatsby develop.
  • Если это не сработает, запустите gatsby clean, очистите кеш сайта в браузере и запустите gatsby develop.
  • Если это не сработает, вы можете быть почти на 100% уверены, что совершили ошибку.
Другие вопросы по тегам