【发布时间】:2020-07-18 14:16:21
【问题描述】:
编辑:我最终创建了我的问题的一个小副本并将其发布到 Gatsby 的 GitHub,我最终在那里获得了一些帮助。
这是该问题的link!
如果此问题已在其他地方得到处理,我很抱歉,但我无法找到我需要的答案。
我目前正在处理 Gatsby、GraphQl 和 YAML 文件,我有多个要映射的部分,但有些有图像,有些没有。
我通过使用 childImageSharp 声明图像来定义我的 GraphQL
sections {
title
description
imageHere {
childImageSharp {
fluid(maxWidth: 600) {
...GatsbyImageSharpFluid_noBase64
}
}
}
我看到了一个解决方案,该解决方案涉及将其添加到我的 gatsby-node.js 中,以便可以从我的 YAML 文件中正确读取路径
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions;
const typeDefs = `
type allProjectPageYaml implements Node {
imageHere: [String]!
}
`;
createTypes(typeDefs);
};
现在我的问题是有些部分有 imageHere 字段,有些则没有
sections:
- title: Title 1
description: Description 1
- title: Title 2
description: Description 2
imageHere: Image1
我得到的错误是 TypeError: Cannot read property 'childImageSharp' of null
我的解决方法是什么?
【问题讨论】:
-
你确定 typeError 是由 graphql 查询而不是由试图访问该属性的 js 触发的吗?在后一种情况下,您可以使用深度属性检查,例如: const image = data.sections.imageHere?.childImageSharp
标签: reactjs graphql yaml gatsby