1. The GraphQL API response returned an error: Fields “default” conflict because they return conflicting types Float! and Boolean!. Use different aliases on the fields to fetch both if this was intentional.
{
"errors": [
{
"message": "Fields \"default\" conflict because they return conflicting types Float! and Boolean!. Use different aliases on the fields to fetch both if this was intentional.",
"extensions": {
"category": "graphql"
},
"locations": [
{
"line": 134,
"column": 3
},
{
"line": 145,
"column": 3
}
]
},
{
"message": "Fields \"value\" conflict because they return conflicting types Float! and Boolean!. Use different aliases on the fields to fetch both if this was intentional.",
"extensions": {
"category": "graphql"
},
"locations": [
{
"line": 139,
"column": 3
},
{
"line": 146,
"column": 3
}
]
}
]
}
2. Reviewing the query request, I found the corresponding message: Fields “default” conflict because they return conflicting types “Float!” and “Boolean!”. Use different aliases on the fields to fetch both if this was intentional. See Figure 1.

query OnlineStoreTheme($themeId: ID!) {
onlineStoreTheme(themeId: $themeId) {
themeSettingsCategories {
...ThemeSettingsCategory
__typename
}
__typename
}
}
fragment ThemePreset on ThemePreset {
id
settings {
...ThemeStyleSetting
}
sections {
id
sectionId
disabled
schema {
blockSchemas {
id
limit
name
settings {
id
info
label
settingId
type
}
type
}
}
}
}
fragment ThemeStyleSetting on ThemeStyleSetting {
id
settingId
value
type
}
fragment ThemeSettingsCategory on ThemeSettingsCategory {
id
title
settings {
...ThemeSetting
__typename
}
__typename
}
fragment ThemeSetting on ThemeSetting {
... on ThemeSettingRange {
...ThemeSettingRange
__typename
}
... on ThemeSettingCheckbox {
...ThemeSettingCheckbox
__typename
}
__typename
}
fragment ThemeSettingCommon on ThemeSetting {
id
info
label
settingId
type
__typename
}
fragment ThemeSettingRange on ThemeSettingRange {
...ThemeSettingCommon
default
min
max
step
unit
value
__typename
}
fragment ThemeSettingCheckbox on ThemeSettingCheckbox {
...ThemeSettingCommon
default
value
__typename
}
3. The cause likely lies in the implementation of this interface type: the field types differ, and inline fragments were used in the query. It is Float! in ThemeSettingRange. It is Boolean! in ThemeSettingCheckbox. If you request fields with the same name (or alias) multiple times within the same selection set, the field must return the same type. See Figure 2 and Figure 3.


type ThemeSettingRange implements ThemeSetting
{
default: Float!
value: Float!
}
type ThemeSettingCheckbox implements ThemeSetting
{
default: Boolean!
value: Boolean!
}
4. Reference: https://github.com/graphql/graphql-js/issues/1361 . Using aliases can resolve this issue. However, using aliases increases the parsing difficulty on the client side. See Figure 4.

fragment ThemeSettingRange on ThemeSettingRange {
...ThemeSettingCommon
rangeDefault: default
min
max
step
unit
rangeValue: value
__typename
}
{
"id": "96b1c8b9-5b18-4760-9e26-50ab009ac011/settings/radius__image",
"info": null,
"label": "图片圆角度数",
"settingId": "radius__image",
"type": "RANGE",
"__typename": "ThemeSettingRange",
"rangeDefault": 0,
"min": 0,
"max": 24,
"step": 1,
"unit": null,
"rangeValue": 0
}
