【问题标题】:Multiple queries error in Gatsby "Multiple "root" queries found"Gatsby 中的多个查询错误“找到多个“根”查询”
【发布时间】:2021-02-05 21:50:42
【问题描述】:
通过本教程创建帖子模板(我在第 4 部分):
https://www.joaopedro.cc/blog-com-gatsby-e-react-parte-4
但是在执行“PostPage”查询时发生错误:
Multiple "root" queries found: "PostPage" and "PostPage".
Only the first ("PostPage") will be registered.
Instead of:
1 | query PostPage {
2 | markdownRemark {
3 | #...
4 | }
5 | }
6 |
7 | query PostPage {
8 | markdownRemark {
9 | #...
10 | }
11 | }
Do:
1 | query postPageAndPostPage {
2 | markdownRemark {
3 | #...
4 | }
5 | markdownRemark {
6 | #...
7 | }
8 | }
我查看了类似问题的其他答案,据我了解,这是一个区分大小写的问题,但据我所知,一切看起来都是正确的。
我不会错位的。 :(提前谢谢!
【问题讨论】:
标签:
reactjs
graphql
gatsby
root
【解决方案1】:
这里的错误信息其实很有帮助,但并没有完全接受。
问题是您只能有一个查询并且您有多个。解决方案是在单个查询中查询您需要的所有数据,而不是像错误提示的那样将其拆分为多个。
唉,您正试图通过同一字段获取我想象的两个不同的数据集,默认情况下这会给您另一个错误。但这里有一个简单的解决方案:使用aliases 对结果中的字段名称进行去重。
query PostPage {
firstPost: markdownRemark {
#...
}
secondPost: markdownRemark {
#...
}
}
【解决方案2】:
我刚刚在仅使用一个 StaticQuery 的 React 组件中遇到了相同的错误消息。这个组件是从另一个项目中复制过来的(它可以正常工作)。
我查看了类似问题的其他答案,据我了解,这是一个区分大小写的问题...
这帮助我解决了这个问题 - 事实证明,React 组件的名称以及 StaticQuery 的名称都不是正确的驼峰式(它们包含“SEO” - 所有大写字母)。
错误信息消失后清理这部分。我以为我分享了这个,因为我发现在这种情况下的错误消息令人困惑。
ERROR #85910 GRAPHQL
Multiple "root" queries found: "SEOQuery" and "SEOQuery".
Only the first ("SEOQuery") will be registered.
Instead of:
1 | query SEOQuery {
2 | site {
3 | #...
4 | }
5 | }
6 |
7 | query SEOQuery {
8 | site {
9 | #...
10 | }
11 | }
Do:
1 | query seoQueryAndSeoQuery {
2 | site {
3 | #...
4 | }
5 | site {
6 | #...
7 | }
8 | }
【解决方案3】:
我今天在 Gatsby 上遇到了同样的错误。使用了一个页面查询和一个静态查询,因此该消息有点误导。
“当您在一个文件中使用两个页面/静态查询时,可能会发生这种情况”
解决这个问题的方法是我追踪正在使用它的文件。其中一个在场,但请注意它在项目中没有以任何方式活跃。一旦它被删除,警报就消失了。因此,简而言之,即使该文件未在任何地方使用第二个相同的静态查询。