GatsbyJS中useStaticQuery用edges查询报错,改用nodes正常求解释
问题原因分析
首先看你第一段查询代码的语法:
query ExperienceQuery { allExperienceJson { edges { node { src desc } } } <!-- 这里多了一个不必要的闭合大括号 --> }
这段查询存在语法错误——在edges字段闭合后,你多写了一个额外的},导致GraphQL解析器无法正确识别查询结构,因此抛出报错。
而你第二段使用nodes的查询,语法是完全正确的,没有多余的括号,所以能正常运行。
另外补充说明Gatsby中edges和nodes的关系:
- 在Gatsby v3及以后的版本中,所有
all*开头的数据源查询(比如allExperienceJson)都同时支持edges和nodes两种结构:edges是传统结构,返回的是包含node字段的对象数组,每个node里才是你的数据nodes是简化后的结构,直接返回你的数据数组,省去了一层edges的嵌套
- 只要语法正确,两种写法在新版本Gatsby里都能正常工作,你第一段代码的问题核心是语法错误,而非
edges字段本身不可用。
如果修正第一段代码的语法错误,去掉多余的那个大括号,查询就能正常运行了:
query ExperienceQuery { allExperienceJson { edges { node { src desc } } } }
内容的提问来源于stack exchange,提问作者Maicmi
相关产品推荐
相关产品推荐

