Страницы Гэтсби не создаются программно из данных - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь сгенерировать страницы для своего блога, используя Gatsby (v2.18.17). Я реализовал пример кода из часть седьмой учебного руководства на веб-сайте Gatsby, где я использую API createPages. Страницы не генерируются, и нет никаких предупреждений или ошибок.

gatsby- node.js

const path = require(`path`)
const { createFilePath } = require(`gatsby-source-filesystem`)

exports.onCreateNode = ({ node, getNode, actions }) => {
  const { createNodeField } = actions
  if (node.internal.type === `MarkdownRemark`) {
    const slug = createFilePath({ node, getNode, basePath: `pages` })
    createNodeField({
      node,
      name: `slug`,
      value: slug,
    })
  }
}

exports.createPages = async ({ graphql, actions }) => {
  const { createPage } = actions
  const result = await graphql(`
    query {
      allMarkdownRemark {
        edges {
          node {
            fields {
              slug
            }
          }
        }
      }
    }
  `)

  result.data.allMarkdownRemark.edges.forEach(({ node }) => {
    createPage({
      path: node.fields.slug,
      component: path.resolve(`./src/templates/post.js`),
      context: {
        // Data passed to context is available
        // in page queries as GraphQL variables.
        slug: node.fields.slug,
      },
    })
  })
}

src / templates / post. js

import React from "react"
import Layout from "../components/layout"
export default () => {
  return (
    <Layout>
      <div>Hello blog post</div>
    </Layout>
  )
}

Сборка вывод , где сгенерировано только 11 страниц (8 из которых были созданы вручную - я не уверен, что другие 3 страницы)

Должно быть более 200 страниц, сгенерированных из моих постов в блоге уценки в content/posts

> gatsby develop

success open and validate gatsby-configs - 0.034s
success load plugins - 0.578s
success onPreInit - 0.002s
success initialize cache - 0.007s
success copy gatsby files - 0.071s
success onPreBootstrap - 0.008s
success createSchemaCustomization - 0.009s
success source and transform nodes - 0.233s
success building schema - 0.304s
success createPages - 0.101s
success createPagesStatefully - 0.090s
success onPreExtractQueries - 0.001s
success update schema - 0.033s
success extract queries from components - 0.270s
success write out requires - 0.046s
success write out redirect data - 0.002s
success Build manifest and related icons - 0.106s
success onPostBootstrap - 0.112s
⠀
info bootstrap finished - 3.825 s
⠀
success run queries - 0.039s - 12/12 303.82/s

Мне интересно, есть ли где-нибудь проблемы с конфигурацией на моем веб-сайте. Однако, слагы печатаются во время сборки, когда я записываю слагов в консоль, перебирая файлы уценки.

Код доступен на GitHub .

1 Ответ

1 голос
/ 13 января 2020

gatsby-plugin-routes в вашем gatsby-config.js каким-то образом мешает функции createPages внутри вашего gatsby-node.js.

Здесь gatsby-node.js, который работал, когда я редактировал ваш проект:

exports.createPages = ({ actions, graphql }) => {
  const { createPage } = actions;
  const blogTemplate = path.resolve("src/templates/post.js");
  return graphql(`
{
  allMarkdownRemark(filter: {fileAbsolutePath: {regex: "content/posts/"}}) {
    edges {
      node {
        fields {
          slug
        }
      }
    }
  }
}
  `).then((result) => {
    if (result.errors) {
      return Promise.reject(result.errors);
    }
    /* --- Create blog pages --- */
    result.data.allMarkdownRemark.edges.forEach(({ node }) => {
      console.log(node.fields.slug);
      createPage({
        path: `/blog${node.fields.slug}`,
        component: blogTemplate,
        context: {
          slug: node.fields.slug,
        },
      });
    });
  });
};

Вам необходимо удалить gatsby-plugin-routes из вашего gatsby-config.js:

/*    {
      resolve: `gatsby-plugin-routes`,
      options: {
        path: `${__dirname}/gatsby-routes.js`,
      },
    },*/

Я бы предложил обходиться без плагина маршрутов, пока другие части вашего сайта не будут запущены. Каждый плагин добавляет сложности вашему проекту, и в этом случае он вызывал тихий сбой.

Это хороший блог. Я возьму вдохновение для моего собственного портфолио. :)

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