Уровень данных 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.info(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: Cannot read property 'allContentfulBlog' of undefined.

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

Прикрепил скриншот терминала здесь.

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
204
1

Ответы 1

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

TypeError: Cannot read property 'allContentfulBlog' of undefined.

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

can not query field 'slug' on type 'ContentfulBlog'

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

Здравствуйте, как я могу поделиться здесь моделью контента? и нет, я не знал, что существует gatsby-contentful-starter, спасибо, я проверю его.

index.jsx 31.07.2018 13:57

Для ответа на этот вопрос здесь, наверное, хватило бы нескольких скриншотов. Но в целом для обмена контентом лучше всего подходят модели content-import и content-export. они доступны на npm. :)

stefan judis 01.08.2018 03:51

Я закончил тем, что удалил функцию exports.onCreateNode, которая отвечала за создание ярлыков из заголовков (я думаю), которые я получил из плагина gatsby-starter-blog, и все вроде нормально.

index.jsx 01.08.2018 15:43

Другие вопросы по теме