wordpress - 盖茨比问题中的 createPages ;重复和未呈现的内容
问题描述
我在尝试呈现单个博客文章时遇到了一些错误。
我尝试将页面模板与 /post/{post_name} 一起使用,但出现此错误:
警告非确定性路由危险:尝试创建页面:“/blog/”,但页面“/blog”已存在这可能导致非确定性路由行为
我再次尝试使用 /blog/{post_name}。
我现在有两条路线,但我不知道如何清理;但更重要的是,在这些页面上,没有任何内容呈现,即使应该有一个 h1 的 innerhtml 设置为 node.title 并且同样是一个内容的 div。
我已将我的配置和组件上传到https://github.com/zackrosegithub/gatsby,以便您查看。
不知道如何修复
我只想看到我的内容呈现在屏幕上。
当没有呈现内容时,开发人员工具似乎无济于事,因为我找不到任何要检查的东西来尝试以另一种方式访问它。
谢谢您的帮助
解决方案
您的方法部分正确。您正在使用基于 Promise 的方法,但是在使用时then()
您已经解决并部分解决了它,因此您不需要使用 的回调resolve()
,这可能会导致 Promise 函数的重复,因此请尝试将其删除。
此外,您可能希望使用async
/await
函数使用更友好的方法。就像是:
exports.createPages = async ({ graphql, actions, reporter }) => {
const yourQuery= await graphql(
`
{
allWordpressPost {
edges{
node{
id
title
slug
excerpt
content
}
}
}
}
`
if (yourQuery.errors) {
reporter.panicOnBuild(`Error while running GraphQL query.`);
return;
}
const postTemplate = path.resolve("./src/templates/post.js")
_.each(yourQuery.data.allWordpressPost.edges, edge => {
createPage({
path: `/post/${edge.node.slug}/`,
component: slash(postTemplate),
context: edge.node,
})
})
})
// and so on for the rest of the queries
};
此外,console.log(pageContext)
在您的中放置一个postTemplate
以获取达到该点的内容并将模板命名为:
const Post = ({pageContext}) => {
console.log("your pageContext is", pageContext);
return <div>
<h1>
{pageContext.title}
</h1>
</div>
}
export default Post;
推荐阅读
- maven - 如何在代理后面配置 Maven
- powershell - 使用单个主 ps1 运行多个 ps1 脚本
- c++ - 无法使用 boost asio ssl use_certificate_chain_file 读取证书文件
- javascript - TypeError:无法读取未定义的属性“0”(使用在另一个函数中定义的正方形时发生错误)
- amazon-web-services - 我们如何在 AWS 胶水中触发多个作业?
- javascript - 自动刷新图像仪表板节点-红色
- linux - 如何避免在linux中解压缩文件时跳过错误的密码?
- vb.net - Google Drive API 如何在 vb.net 文件下载
- javascript - JS中数组的重新分配和“按引用传递”原则
- ios - “找不到框架 GoogleAppMeasurement” 手动添加框架时出错