我正在尝试构建一个基于的盖茨比网站,但我很难调试与graphql模式相关的错误。我得到的错误是:
Error: Type with name "AuthorYaml" does not exists
- TypeStorage.js:44 SchemaComposer.get
[Physicc-blog]/[graphql-compose]/lib/TypeStorage.js:44:13
- TypeMapper.js:585 ThunkComposer._thunk
[Physicc-blog]/[graphql-compose]/lib/TypeMapper.js:585:34
- ThunkComposer.js:20 ThunkComposer.get ofType [as ofType]
[Physicc-blog]/[graphql-compose]/lib/ThunkComposer.js:20:34
- ThunkComposer.js:46 ThunkComposer.getType
[Physicc-blog]/[graphql-compose]/lib/ThunkComposer.js:46:17
- ListComposer.js:22 ListComposer.getType
[Physicc-blog]/[graphql-compose]/lib/ListComposer.js:22:49
- ObjectTypeComposer.js:348 ObjectTypeComposer.getFieldConfig
[Physicc-blog]/[graphql-compose]/lib/ObjectTypeComposer.js:348:18
- index.js:220 forEach
[Physicc-blog]/[gatsby]/src/schema/extensions/index.js:220:48
- Array.forEach
- index.js:215 forEach
[Physicc-blog]/[gatsby]/src/schema/extensions/index.js:215:8
- Array.forEach
- index.js:211 processFieldExtensions
[Physicc-blog]/[gatsby]/src/schema/extensions/index.js:211:32
- schema.js:226 processTypeComposer
[Physicc-blog]/[gatsby]/src/schema/schema.js:226:11
- schema.js:200 map
[Physicc-blog]/[gatsby]/src/schema/schema.js:200:7
- Array.map
- schema.js:199 updateSchemaComposer
[Physicc-blog]/[gatsby]/src/schema/schema.js:199:50
- schema.js:64 buildSchema
[Physicc-blog]/[gatsby]/src/schema/schema.js:64:3我用过
gatsby new my-gatsby-project https://github.com/scttcper/gatsby-casper若要初始化项目,请执行以下操作。我不知道为什么会产生这个错误。
发布于 2021-08-23 06:43:48
好吧..。该启动器(盖茨比-卡斯珀)在gatsby-node.js at 第105行中引用了AuthorYaml
allAuthorYaml {
edges {
node {
id
}
}因此,如果您没有定义该节点,那么您的GraphQL查询将无法运行,因此代码正在中断。
allAuthorsYaml是一个由gatsby-transformer-yaml创建的节点,在gatsby-config.js (第64项)中显示:
'gatsby-transformer-yaml',并在同一个第11行文件的gatsby-config.js中映射:
mapping: {
'MarkdownRemark.frontmatter.author': 'AuthorYaml',
},这意味着您要从标记frontmatter中的author字段创建一个frontmatter节点。
因此,如果您的减价frontmatter不包含作者引用,您的代码就会中断。可以通过在标记文件中设置适当的作者,或者仅通过从allAuthorYaml查询节点中删除gatsby-node.js和对它们的所有相关引用来轻松地修复它,例如:
// Create author pages
const authorTemplate = path.resolve('./src/templates/author.tsx');
result.data.allAuthorYaml.edges.forEach(edge => {
createPage({
path: `/author/${_.kebabCase(edge.node.id)}/`,
component: authorTemplate,
context: {
author: edge.node.id,
},
});
});
};来自第188行的gatsby-node.js文件。
authorTemplate也是如此,因为您不会在上下文中传递任何作者,您的authorTemplate查询也会失败。
https://stackoverflow.com/questions/68888062
复制相似问题