Estoy tratando de crear un sitio web de Gatsby basado en el iniciador de Gatsby-casper, pero recibo un error difícil de depurar relacionado con el esquema de graphql. El error que me sale es este:
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:3he utilizado
gatsby new my-gatsby-project https://github.com/scttcper/gatsby-casperpara inicializar el proyecto. No puedo averiguar por qué se genera este error.
Bueno... ese iniciador ( gatsby-casper ) tiene una referencia a AuthorYaml en gatsby-node.js en la línea 105 :
allAuthorYaml { edges { node { id } }Entonces, si no ha definido ese nodo, su consulta GraphQL no se puede ejecutar, por lo tanto, el código se está rompiendo.
Tirando más del hilo, allAuthorsYaml es un nodo creado porgatsby-transformer-yaml , presente en gatsby-config.js ( línea 64 ):
'gatsby-transformer-yaml', Y mapeado en la línea 11 del mismo archivo gatsby-config.js :
mapping: { 'MarkdownRemark.frontmatter.author': 'AuthorYaml', }, Esto significa que está creando un nodo AuthorYaml desde el campo de autor en su frente de frontmatter .
Por lo tanto, si su frontmatter no contiene una referencia de autor, su código se romperá. Se puede arreglar fácilmente configurando el autor adecuado en el archivo de rebajas, o simplemente eliminando el nodo de consulta allAuthorYaml de gatsby-node.js y todas las referencias relacionadas a ellos como:
// 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, }, }); }); }; De la línea 188 del archivo gatsby-node.js .
Lo mismo se aplica para la authorTemplate de autor, ya que no pasará ningún autor en el contexto en que su consulta de authorTemplate de autor también fallará.