错误:名称为“AuthorYaml”的类型不存在 - gatsby-casper starter
Posted
技术标签:
【中文标题】错误:名称为“AuthorYaml”的类型不存在 - gatsby-casper starter【英文标题】:Error: Type with name "AuthorYaml" does not exists - gatsby-casper starter 【发布时间】:2021-10-23 12:52:04 【问题描述】:我正在尝试基于 gatsby-casper starter 构建一个 gatsby 网站,但我遇到了一个难以调试的与 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
初始化项目。我无法弄清楚为什么会产生这个错误。
【问题讨论】:
【参考方案1】:嗯...那个启动器 (gatsby-casper) 在 gatsby-node.js
line 105 中引用了 AuthorYaml
:
allAuthorYaml
edges
node
id
因此,如果您尚未定义该节点,您的 GraphQL 查询将无法运行,因此代码会中断。
拉更多线程,allAuthorsYaml
是gatsby-transformer-yaml
创建的节点,存在于gatsby-config.js
(line 64)中:
'gatsby-transformer-yaml',
并映射到同一gatsby-config.js
文件的line 11中:
mapping:
'MarkdownRemark.frontmatter.author': 'AuthorYaml',
,
这意味着您正在从 markdown frontmatter
中的作者字段创建一个 AuthorYaml
节点。
因此,如果您的降价 frontmatter
不包含作者参考,您的代码将会中断。它可以通过在 markdown 文件中设置正确的作者来轻松修复,或者只需从 gatsby-node.js
中删除 allAuthorYaml
查询节点以及对它们的所有相关引用,例如:
// 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,
,
);
);
;
来自line 188 来自gatsby-node.js
文件。
这同样适用于authorTemplate
,因为在authorTemplate
查询也会失败的上下文中,您不会传递任何作者。
【讨论】:
问题是gatsby-node.js
和gatsby-config.js
在我克隆的本地副本中非常不同。当我克隆 git repo 时,我能够顺利编译所有内容。它没有缺少 allAuthorsYaml
节点。谢谢你的解释。以上是关于错误:名称为“AuthorYaml”的类型不存在 - gatsby-casper starter的主要内容,如果未能解决你的问题,请参考以下文章
错误“名称空间'System.Web'中不存在类型或名称空间名称'Script'”背后是不是有解释
错误 CS0234 名称空间“MvvmCross”中不存在类型或名称空间名称“Platforms”(您是不是缺少程序集引用?)
Typescript 未检测到声明“d.ts”文件中不存在的类型名称的错误
错误 CS0234:命名空间“Microsoft”中不存在类型或命名空间名称“AspNetCore”(您是不是缺少程序集引用?)
错误 CS0234:命名空间“UnityEditor”中不存在类型或命名空间名称“iOS”。您是不是缺少程序集参考?
错误 CS0234 命名空间“Xamarin.Forms.Platform”中不存在类型或命名空间名称“Android”