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:3
he utilizado
gatsby new my-gatsby-project https://github.com/scttcper/gatsby-casper
para 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 solucionar 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á.