Уровень данных Contentful CMS не достигает моего блога Gatsby / React

Я использовал локальные файлы .md для уровня данных Gatsby, но теперь мне нужна интеграция с Contentful CMS.

const Promise = require('bluebird')
const path = require('path')

exports.createPages = ({ graphql, boundActionCreators }) => {
const { createPage } = boundActionCreators

return new Promise((resolve, reject) => {
const blogPost = path.resolve('./src/templates/blog-post.js')

resolve(
  graphql(
    `
      {
        allContentfulBlog(limit: 500) {
          edges {
            node {
              id
              slug
            }
          }
        }
      }
    `
  ).then(result => {
    if (result.errors) {
      console.log(result.errors)
      reject(result.errors)
    }
    result.data.allContentfulBlog.edges.forEach(edge => {
      createPage({
        path: edge.node.slug,
        component: blogPost,
        context: {
          slug: edge.node.slug,
        },
      })
    })
    return
   })
  )
 })
}

exports.onCreateNode = ({ node, boundActionCreators, getNode }) => {
  const { createNodeField } = boundActionCreators
}

Это мой файл gatsby-node.js.

Терминал дает:

TypeError: невозможно прочитать свойство allContentfulBlog, равное undefined.

На Contentful.com тип контента называется Блог.

Я прикрепил снимок экрана терминала сюда.

Есть какие-нибудь намеки?


person index.jsx    schedule 30.07.2018    source источник


Ответы (1)


Это выглядит как

TypeError: невозможно прочитать свойство allContentfulBlog, равное undefined.

это результат

не может запросить поле "slug" для типа "ContentfulBlog"

Может, вы поделитесь своей моделью контента? Я не знаю, видели ли вы довольную стартером Гэтсби. Он поставляется с моделью содержимого - так что вы тоже можете туда заглянуть. :)

person stefan judis    schedule 30.07.2018
comment
Здравствуйте, как я могу поделиться здесь моделью контента? и нет, я не знал, что существует gatsby-contentful-starter, спасибо, я проверю его. - person index.jsx; 31.07.2018
comment
Для ответа на этот вопрос здесь, наверное, хватило бы нескольких скриншотов. Но в целом для совместного использования контента модели content-import и content-export - это инструменты, которые нужно использовать. они доступны на npm. :) - person stefan judis; 01.08.2018
comment
Я закончил тем, что удалил функцию exports.onCreateNode, которая отвечала за создание ярлыков из заголовков (я думаю), которые я получил из плагина gatsby-starter-blog, и все вроде нормально. - person index.jsx; 01.08.2018