我正在尝试将内容和盖茨比连接到一个博客。
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'。”我不知道该如何解决这个问题。有人有想法吗?
答案 0 :(得分:1)
我遇到了同样的困难,我假设您正在关注this youtube tutorial by khaled,并尝试使用默认的内容丰富的Blog模板将其检出,如下所示:
在撰写 allContentful {contentModelName}帖子时,请确保使用正确的contentModelName。当使用默认的博客示例来满足要求时,标题将显示为“ Blog Post”。只需将其从“博客发布”更改为“博客”,如果您按照Khaled的步骤并添加了“新的Promise”修复程序(我认为您已经做到了),一切都应该正常工作。
祝你好运!