Javascript 盖茨比Mdx frontmatter是空的
我有一个定义了frontmatter的mdx gatsby页面Javascript 盖茨比Mdx frontmatter是空的,javascript,reactjs,gatsby,mdxjs,Javascript,Reactjs,Gatsby,Mdxjs,我有一个定义了frontmatter的mdx gatsby页面 --- title: About Me path: /about description: Some information about me. --- # About Me [Twitter](https://twitter.com/RainFire336) 我在gatsby config.js中配置了一个默认布局: { 解析:“盖茨比插件mdx”, 选项:{ 默认布局:{ 默认值:require.resolve(“./src
---
title: About Me
path: /about
description: Some information about me.
---
# About Me
[Twitter](https://twitter.com/RainFire336)
我在gatsby config.js
中配置了一个默认布局:
{
解析:“盖茨比插件mdx”,
选项:{
默认布局:{
默认值:require.resolve(“./src/components/page layout.tsx”)
},
盖茨比马克插件:[
“盖茨比评论图像”,
{
解决方案:“盖茨比评论prismjs”,
选项:{
showlinenumber:正确,
提示:{
用户:“雨”,
},
},
},
],
},
}
布局尝试使用其道具访问frontmatter:
import React from 'react';
import { Layout } from './layout';
import { Card } from './card';
import { Metadata } from './metadata';
interface Props {
children: React.ReactNode;
uri: string;
pageContext: { frontmatter: any };
}
export default function (p: Props) {
const { children, uri, pageContext } = p;
return (
<Layout>
<Metadata {...pageContext.frontmatter} url={uri} />
<Card style={{ width: '50%' }}>{children}</Card>
</Layout>
);
}
从“React”导入React;
从“/Layout”导入{Layout};
从“./Card”导入{Card};
从“/Metadata”导入{Metadata};
界面道具{
子节点:React.ReactNode;
uri:字符串;
pageContext:{frontmatter:any};
}
导出默认功能(p:道具){
const{children,uri,pageContext}=p;
返回(
{儿童}
);
}
问题是frontmatter始终是一个空对象:
所以形成一个问题。如何访问我的frontmatter?外人不可能在没有代理的情况下调试您的代码 调试GraphQL的最佳方法是使用浏览器的GraphiQL界面 将用数据填充
pageContext
的graphQL查询粘贴到GraphiQL编辑器的查询窗口http://localhost:8000/___graphql
frontmatter是否包含数据
- 如果没有,则说明GraphQL查询有问题,或者无法查询数据
- 如果是这样的话,您很可能会在传递数据或对其进行分解时出错。使用
检查数据对象console.log(pageContext)
- 我也遇到了这个问题。我不得不重新运行
gatsby develope
,以使frontmatter显示在我的pageContext
中
我还发现,当我更新frontmatter时,它不会自动更新,我需要重新启动
gatsby develope
命令才能显示它。也有同样的问题。重新运行《盖茨比开发》对我来说不起作用
什么有效:
每当我在前面添加一个新的键/值时,我都需要在重新运行Gatsby develope
之前删除Gatsby应用程序根目录下的.cache
文件夹。然后,我可以通过布局中的pageContext.frontmatter
访问正确的frontmatter
还值得注意的是,frontmatter应该先于MDX文件中的任何导入。像这样:
---
福:“酒吧”
---
导入“./something.js”
#我伟大的MDX
TLDR:
删除盖茨比项目根目录中的
.cache
文件夹。没有查询。根据,props.pageContext.frontmatter
应该自动填充。我不知道为什么,但它随机开始工作。面临同样的问题。没有一个答案有效。