Error: Type with name "AuthorYaml" does not exists - gatsby-casper starter

Error: Type with name "AuthorYaml" does not exists - gatsby-casper starter

我正在尝试基于 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

初始化项目。我无法弄清楚为什么会生成此错误。

嗯...那个首发 (gatsby-casper) has a reference to AuthorYaml in the gatsby-node.js at line 105:

  allAuthorYaml {
    edges {
      node {
        id
      }
    }

因此,如果您尚未定义该节点,您的 GraphQL 查询将无法 运行,因此代码已损坏。

拉多线程,allAuthorsYamlgatsby-transformer-yaml, present in 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 查询也会失败。