【发布时间】:2018-10-12 18:49:42
【问题描述】:
我正在尝试将 Contentful 和 Gatsby 联系起来以创建一个博客。
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: Cannot read property 'allContentfulBlog' of undefined.”我不知道我应该如何解决这个问题。有人有想法吗?
【问题讨论】:
-
你的内容类型的名称是什么,应该是博客。 gatsby 是否输出有关 graphql 查询的内容?
-
我将其命名为博客。嗯,上面提到的错误,它说“- gatsby-node.js:23 graphql.then.result”除此之外,我找不到任何关于graphql查询的具体信息。
-
我在承诺解决后将“结果”记录到控制台,并且它给了我这个错误> GraphQLError:无法在“ContentfulBlog”类型上查询字段“slug”。
-
你有那个内容类型的字段 slug,也许它是一个大写的 Slug?
-
我发现在 JSON Preview 中,只有“titletext”而不是“slug”。我将所有“slug”从 atom 更改为“titletext”,但它仍然给出错误消息:“GraphQL Error Unknown field
titleon typeContentfulBlog”来自 blog-post.js,pageQuery graphql。
标签: javascript content-management-system gatsby contentful