Gatsby - создайте index.js в каждом подкаталоге - PullRequest
0 голосов
/ 28 сентября 2019

Мой сайт Gatsby получает контент из файлов YAML, а не из Markdown.Существует множество категорий и подкатегорий, так что допустимые пути имеют вид:

mysite.com/movies/drama/war/1980s
mysite.com/video-games/puzzles
etc...

Я хотел бы создать index.js для каждого подкаталога: / movies, / movies / drama, / movies / drama/ war, / video-games и т. д.

Моя стратегия состоит в том, чтобы получить список всех страниц, из которых я могу извлечь все уникальные пути и createPage index.js на каждой.Однако я попытался сделать запрос

  {
    allSitePage {
      nodes {
        path
      }
    }
  }

во время createPages узла gatsby-node, но ни один из путей еще не был создан - существовал только корневой и 404 пути (вероятно, потому что это единственные файлы в моих / страницахкаталог?)

Я предполагаю, что есть лучший способ сделать это в любом случае.Как я могу создать index.js в каждом подкаталоге?Спасибо.

РЕДАКТИРОВАТЬ: Я понял, createPage - это асинхронная функция, мой запрос выполнялся до завершения createPage s.Я изменил весь свой код с помощью async / await, чтобы убедиться, что страницы были созданы до выполнения запроса allSitePage, но он все еще остается пустым.Сейчас действительно запутался.(Еще одно примечание: в браузере GraphiQL запрос, конечно, показывает все страницы. Похоже, они просто не доступны, пока не завершится gatsby-node.js)

2-е РЕДАКТИРОВАНИЕ : Iменя попросили опубликовать мой код createPage ():

  const postsYaml = resultYaml.data.allYaml.edges
  // 1-1 mapping between YAML edge and Gatsby page
  // use Promise.all() to ensure all pages are created before continuing
  await Promise.all(postsYaml.map(async (post, index) => {
    const previous = index === postsYaml.length - 1 ? null : postsYaml[index + 1].node
    const next = index === 0 ? null : postsYaml[index - 1].node

    createPage({
      path: post.node.fields.slug,
      component: blog-page,
      context: {
        slug: post.node.fields.slug,
        previous,
        next
      },
    })
  }))

Итак, этот код запускается, создает страницы, а затем я запускаю GraphQL, который я первоначально разместил - и страниц там нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...