gpt4 book ai didi

javascript - 未捕获的类型错误 : Cannot read property 'data' of undefined with Gatsby and graphQl

转载 作者:行者123 更新时间:2023-12-03 13:33:12 26 4
gpt4 key购买 nike

我是第一次测试 Gatsby 和 GraphQl,并且正在尝试一个简单的示例......

当我想通过布局中的 GraphQl 请求显示标题时出现此错误? :未捕获类型错误:无法读取未定义的属性“site”

这是我的布局:

import React from 'react'
import { graphql } from 'gatsby'

export default ({ children, data }) =>
<div style={{margin: 'auto', maxWidth: 760}}>
<h2>{data.site.siteMetadata.title}</h2>
{children}
<footer>
Copyright blablb abolajoa.
</footer>
</div>

export const query = graphql`
query LayoutQuery {
site {
siteMetadata {
title
}
}
}
`

和我的 gatsby-config.js :

module.exports = {
siteMetadata: {
title: `Hardcoders`
},
plugins: [
{
resolve: 'gatsby-plugin-typography',
options: {
pathToConfigModule: 'src/utils/typography.js'
}
},
]
}

这是项目的配置:

"dependencies": {
"gatsby": "^2.0.0",
"gatsby-plugin-typography": "^2.2.0",
"react": "^16.5.1",
"react-dom": "^16.5.1",
"react-typography": "^0.16.13",
"typography": "^0.16.17",
"typography-theme-github": "^0.15.10"
}

知道什么是干扰吗?

最佳答案

在 Gatsby 中,我知道有两种类型的 graphql 查询:页面查询和静态查询。

页面查询这些通常包含在 src/pages 文件夹下的组件文件的底部。查询结果会自动传递到相应页面组件的 props.data 属性。 https://www.gatsbyjs.org/docs/page-query/

静态查询这些是使用 StaticQuery 组件创建的,该组件可以包含在任何 React 组件中(也称为不只是在 src/pages 文件夹下)。 https://www.gatsbyjs.org/docs/static-query/

对于您的情况,听起来您正在尝试在非页面组件中进行页面查询,该组件不会自动分配给 data 属性。您可以尝试将查询移动到使用布局的任何页面组件中,或者您可以通过 StaticQuery 组件将其转换为静态查询。

例如在 src/pages/index.jsx

export default ({ data }) => (
<Layout data={data}>
</Layout>
);

export const query = graphql`
query LayoutQuery {
site {
siteMetadata {
title
}
}
}
}

关于javascript - 未捕获的类型错误 : Cannot read property 'data' of undefined with Gatsby and graphQl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52780033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com