将内容丰富的CMS与gatsby页面连接起来

时间:2018-05-02 15:32:53

标签: javascript content-management-system gatsby contentful

我正在尝试将内容和盖茨比连接到一个博客。

const path = require('path');

exports.createPages = ({ graphql, boundActionCreators }) => {
  const { createPage } = boundActionCreators;
  return new Promise((resolve, reject) => {
    const blogPostTemplate = path.resolve('src/templates/blog-post.js');
    resolve(
      graphql(`
        {
          allContentfulBlog(limit: 100) {
            edges {
              node {
                id
                slug
              }
            }
          }
        }
      `).then(result => {
        if (result.errors) {
          reject(result.errors);
        }
        result.data.allContentfulBlog.edges.forEach(edge => {
          createPage({
            path: edge.node.slug,
            component: blogPostTemplate,
            context: {
              slug: edge.node.slug
            }
          });
        });
        return;
      })
    );
  });
};

这是我在gatsby-node.js中写的。当我执行npm run develop时,它给了我一个错误,说“TypeError:无法读取未定义的属性'allContentfulBlog'。”我不知道该如何解决这个问题。有人有想法吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的困难,我假设您正在关注this youtube tutorial by khaled,并尝试使用默认的内容丰富的Blog模板将其检出,如下所示:

enter image description here

在撰写 allContentful {contentModelName}帖子时,请确保使用正确的contentModelName。当使用默认的博客示例来满足要求时,标题将显示为“ Blog Post”。只需将其从“博客发布”更改为“博客”,如果您按照Khaled的步骤并添加了“新的Promise”修复程序(我认为您已经做到了),一切都应该正常工作。

enter image description here

祝你好运!