从盖茨比开始并使用https://github.com/ryanwiemer/gatsby-starter-gcn。刚刚更新到v3和最新的gatsby插件和Just:
错误#11321插件 "gatsby-node.js“在运行createPages生命周期时抛出了一个错误: 接口字段ContentfulReference.contentful_id期望输入字符串!但是ContentfulAsset.contentful_id是类型字符串。
在gatsby-node.js中是:
createTypes(`
interface ContentfulReference {
contentful_id: String!
id: ID!
}
`);
createTypes(schema.buildObjectType({
name: `ContentfulAsset`,
fields: {
contentful_id: {
type: `String!`
},
id: {
type: `ID!`
}
},
interfaces: [`ContentfulReference`, `Node`]
}));这也发生在其他几个方面(所有这些都有contentful_id: String!):
接口字段ContentfulReference.contentful_id期望输入字符串!但是ContentfulPage.contentful_id是类型字符串。 接口字段ContentfulEntry.contentful_id期望输入字符串!但是ContentfulPage.contentful_id是类型字符串。 接口字段ContentfulEntry.node_locale期望输入字符串!但是ContentfulPage.node_locale是类型字符串。 接口字段ContentfulReference.contentful_id期望输入字符串!但是ContentfulPost.contentful_id是类型字符串。 接口字段ContentfulEntry.contentful_id期望输入字符串!但是ContentfulPost.contentful_id是类型字符串。 接口字段ContentfulEntry.node_locale期望输入字符串!但是ContentfulPost.node_locale是类型字符串。 接口字段ContentfulReference.contentful_id期望输入字符串!但是ContentfulTag.contentful_id是类型字符串。 接口字段ContentfulEntry.contentful_id期望输入字符串!但是ContentfulTag.contentful_id是类型字符串。 接口字段ContentfulEntry.node_locale期望输入字符串!但是ContentfulTag.node_locale是类型字符串。
发布于 2021-09-20 04:27:18
根据:
接口字段ContentfulReference.contentful_id期望输入字符串!但是ContentfulAsset.contentful_id是类型字符串。
由于! (空/非空),在某些字段中,您的contentful_id似乎是null,因此它破坏了您定义的接口的契约。我不知道是什么引起了您的问题,因为考虑到所提供的数据,很难猜测,但是我会尝试删除字段的空性(使用!,您正在告诉接口contentful_id永远是不可空的),或者检查所有的引用以检测哪个是null。
interface ContentfulReference {
contentful_id: String
id: ID!
}发布于 2021-09-22 16:58:09
我也遇到了同样的问题。删除src/gatsby/schema/schema.gql并运行npm run clean,npm run develop应该重新生成架构,并允许站点再次工作。
以上回答和这个问题的评论向我介绍了这个问题:存储在src/gatsby/schema/schema.gql中的来自gatsby-plugin-schema-snapshot的模式快照已经过时,在以后版本的API中contentful_id很可能被标记为可为空。
https://stackoverflow.com/questions/69238522
复制相似问题