在 Laravel 6、Lighthouse 中,报错:Argument 1 passed to Nuwave\Lighthouse\Schema\TypeRegistry::get() must be of the type string, array given

1、报错:Argument 1 passed to App\\Exceptions\\Handler::report() must be an instance of Exception, instance of TypeError given, called in E:\\wwwroot\\object\\vendor\\nuwave\\lighthouse\\src\\Execution\\ReportingErrorHandler.php on line 40。如图1

图1

{
  "message": "Argument 1 passed to App\\Exceptions\\Handler::report() must be an instance of Exception, instance of TypeError given, called in E:\\wwwroot\\object\\vendor\\nuwave\\lighthouse\\src\\Execution\\ReportingErrorHandler.php on line 40",
  "exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
  "file": "E:\\wwwroot\\object\\app\\Exceptions\\Handler.php",
  "line": 42,
  "trace": [
 ...
 ]
}

2、参考网址:https://www.shuijingwanwq.com/2022/01/26/5827/ 。版本兼容问题所导致。编辑 /vendor/nuwave/lighthouse/src/Execution/ReportingErrorHandler.php。打印 $error。message:Argument 1 passed to Nuwave\Lighthouse\Schema\TypeRegistry::get() must be of the type string, array given, called in E:\wwwroot\object\vendor\nuwave\lighthouse\src\Schema\TypeRegistry.php on line 542。如图2

图2

GraphQL\Error\Error {#11984
  -locations: array:1 [
    0 => GraphQL\Language\SourceLocation {#11586
      +line: 185
      +column: 7
    }
  ]
  +path: array:8 [
    0 => "onlineStoreTheme"
    1 => "current"
    2 => "sections"
    3 => 2
    4 => "blocks"
    5 => 0
    6 => "settings"
    7 => 0
  ]
  +nodes: array:1 [
    0 => GraphQL\Language\AST\FieldNode {#3995
      +kind: "Field"
      +name: GraphQL\Language\AST\NameNode {#3996
        +kind: "Name"
        +value: "settings"
        +loc: GraphQL\Language\AST\Location {#3997
          +start: 2556
          +end: 2564
          +startToken: GraphQL\Language\Token {#2908
            +kind: "Name"
            +start: 2556
            +end: 2564
            +line: 185
            +column: 7
            +value: "settings"
            +prev: GraphQL\Language\Token {#2907
              +kind: "Name"
              +start: 2545
              +end: 2549
              +line: 184
              +column: 7
              +value: "type"
              +prev: GraphQL\Language\Token {#2906
                +kind: "Name"
                +start: 2530
                +end: 2538
                +line: 183
                +column: 7
                +value: "disabled"
                +prev: GraphQL\Language\Token {#2905
                  +kind: "Name"
                  +start: 2516
                  +end: 2523
                  +line: 182
                  +column: 7
                  +value: "blockId"
                  +prev: GraphQL\Language\Token {#2904
                    +kind: "Name"
                    +start: 2507
                    +end: 2509
                    +line: 181
                    +column: 7
                    +value: "id"
                    +prev: GraphQL\Language\Token {#2903
                      +kind: "{"
                      +start: 2499
                      +end: 2500
                      +line: 180
                      +column: 12
                      +value: null
                      +prev: GraphQL\Language\Token {#2902
                        +kind: "Name"
                        +start: 2492
                        +end: 2498
                        +line: 180
                        +column: 5
                        +value: "blocks"
                        +prev: GraphQL\Language\Token {#2901
                          +kind: "Name"
                          +start: 2477
                          +end: 2487
                          +line: 179
                          +column: 5
                          +value: "blockOrder"
                          +prev: GraphQL\Language\Token {#2900
                            +kind: "Name"
                            +start: 2468
                            +end: 2472
                            +line: 178
                            +column: 5
                            +value: "type"
                            +prev: GraphQL\Language\Token {#2899
                              +kind: "}"
                              +start: 2462
                              +end: 2463
                              +line: 177
                              +column: 5
                              +value: null
                              +prev: GraphQL\Language\Token {#2898
                                +kind: "Name"
                                +start: 2453
                                +end: 2457
                                +line: 176
                                +column: 7
                                +value: "type"
                                +prev: GraphQL\Language\Token {#2897
                                  +kind: "Name"
                                  +start: 2441
                                  +end: 2446
                                  +line: 175
                                  +column: 7
                                  +value: "value"
                                  +prev: GraphQL\Language\Token {#2896
                                    +kind: "Name"
                                    +start: 2425
                                    +end: 2434
                                    +line: 174
                                    +column: 7
                                    +value: "settingId"
                                    +prev: GraphQL\Language\Token {#2895
                                      +kind: "Name"
                                      +start: 2416
                                      +end: 2418
                                      +line: 173
                                      +column: 7
                                      +value: "id"
                                      +prev: GraphQL\Language\Token {#2894
                                        +kind: "{"
                                        +start: 2408
                                        +end: 2409
                                        +line: 172
                                        +column: 14
                                        +value: null
                                        +prev: GraphQL\Language\Token {#2893 …8}
                                        +next: GraphQL\Language\Token {#2895}
                                      }
                                      +next: GraphQL\Language\Token {#2896}
                                    }
                                    +next: GraphQL\Language\Token {#2897}
                                  }
                                  +next: GraphQL\Language\Token {#2898}
                                }
                                +next: GraphQL\Language\Token {#2899}
                              }
                              +next: GraphQL\Language\Token {#2900}
                            }
                            +next: GraphQL\Language\Token {#2901}
                          }
                          +next: GraphQL\Language\Token {#2902}
                        }
                        +next: GraphQL\Language\Token {#2903}
                      }
                      +next: GraphQL\Language\Token {#2904}
                    }
                    +next: GraphQL\Language\Token {#2905}
                  }
                  +next: GraphQL\Language\Token {#2906}
                }
                +next: GraphQL\Language\Token {#2907}
              }
              +next: GraphQL\Language\Token {#2908}
            }
            +next: GraphQL\Language\Token {#2909
              +kind: "{"
              +start: 2565
              +end: 2566
              +line: 185
              +column: 16
              +value: null
              +prev: GraphQL\Language\Token {#2908}
              +next: GraphQL\Language\Token {#2910
                +kind: "Name"
                +start: 2575
                +end: 2577
                +line: 186
                +column: 9
                +value: "id"
                +prev: GraphQL\Language\Token {#2909}
                +next: GraphQL\Language\Token {#2911
                  +kind: "Name"
                  +start: 2586
                  +end: 2590
                  +line: 187
                  +column: 9
                  +value: "info"
                  +prev: GraphQL\Language\Token {#2910}
                  +next: GraphQL\Language\Token {#2912
                    +kind: "Name"
                    +start: 2599
                    +end: 2604
                    +line: 188
                    +column: 9
                    +value: "label"
                    +prev: GraphQL\Language\Token {#2911}
                    +next: GraphQL\Language\Token {#2913
                      +kind: "Name"
                      +start: 2613
                      +end: 2622
                      +line: 189
                      +column: 9
                      +value: "settingId"
                      +prev: GraphQL\Language\Token {#2912}
                      +next: GraphQL\Language\Token {#2914
                        +kind: "Name"
                        +start: 2631
                        +end: 2635
                        +line: 190
                        +column: 9
                        +value: "type"
                        +prev: GraphQL\Language\Token {#2913}
                        +next: GraphQL\Language\Token {#2915
                          +kind: "}"
                          +start: 2642
                          +end: 2643
                          +line: 191
                          +column: 7
                          +value: null
                          +prev: GraphQL\Language\Token {#2914}
                          +next: GraphQL\Language\Token {#2916
                            +kind: "}"
                            +start: 2648
                            +end: 2649
                            +line: 192
                            +column: 5
                            +value: null
                            +prev: GraphQL\Language\Token {#2915}
                            +next: GraphQL\Language\Token {#2917
                              +kind: "}"
                              +start: 2652
                              +end: 2653
                              +line: 193
                              +column: 3
                              +value: null
                              +prev: GraphQL\Language\Token {#2916}
                              +next: GraphQL\Language\Token {#2918
                                +kind: "}"
                                +start: 2654
                                +end: 2655
                                +line: 194
                                +column: 1
                                +value: null
                                +prev: GraphQL\Language\Token {#2917}
                                +next: GraphQL\Language\Token {#2919
                                  +kind: "Name"
                                  +start: 2657
                                  +end: 2665
                                  +line: 196
                                  +column: 1
                                  +value: "fragment"
                                  +prev: GraphQL\Language\Token {#2918}
                                  +next: GraphQL\Language\Token {#2920
                                    +kind: "Name"
                                    +start: 2666
                                    +end: 2684
                                    +line: 196
                                    +column: 10
                                    +value: "themeSectionSchema"
                                    +prev: GraphQL\Language\Token {#2919}
                                    +next: GraphQL\Language\Token {#2921
                                      +kind: "Name"
                                      +start: 2685
                                      +end: 2687
                                      +line: 196
                                      +column: 29
                                      +value: "on"
                                      +prev: GraphQL\Language\Token {#2920}
                                      +next: GraphQL\Language\Token {#2922
                                        +kind: "Name"
                                        +start: 2688
                                        +end: 2700
                                        +line: 196
                                        +column: 32
                                        +value: "ThemeSection"
                                        +prev: GraphQL\Language\Token {#2921}
                                        +next: GraphQL\Language\Token {#2923 …8}
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
          +endToken: GraphQL\Language\Token {#2908}
          +source: GraphQL\Language\Source {#2959
            +body: """
              {
                onlineStoreTheme(themeId: "theme") {
                  id
                  editable
                  createdAt
                  publishAt
                  name
                  metadata {
                    id
                    author
                    description
                    documentationUrl
                    logoUrl
                    name
                    supportEmail
                    supportUrl
                    version
                  }
                  presets {
                    id
                    settings {
                      id
                      settingId
                      value
                      type
                    }
                    ...sections
                  }
                  current {
                    id
                    settings {
                      id
                      settingId
                      value
                      type
                    }
                    ...sections
                  }
                  sectionSchemas {
                    blockSchemas {
                      id
                      limit
                      name
                      settings {
                        id
                        info
                        label
                        settingId
                        type
                      }
                      type
                    }
                    blocksLimit
                    hasPresets
                    id
                    limit
                    maxBlocks
                    name
                    settings {
                      id
                      info
                      label
                      settingId
                      type
                    }
                    type
                  }
                  themeSettingsCategories {
                    id
                    settings {
                      id
                      info
                      label
                      settingId
                      type
                    }
                    title
                  }
                  templateSettingsData(basename: "index") {
                    id
                    sectionId
                    disabled
                    ...themeSectionSchema
                    settings {
                      id
                      settingId
                      value
                      type
                    }
                    type
                    blockOrder
                    blocks {
                      id
                      blockId
                      disabled
                      type
                      settings {
                        id
                        info
                        label
                        settingId
                        type
                      }
                    }
                  }
                  themeAssetList {
                    themeId
                    name
                    key
                    creatable
                    themeAssetKeys
                  }
                  themeAssetVersions(key: "string") {
                    code
                    key
                    version
                    createdAt
                    contentType
                  }
                  themeAsset(key: "string") {
                    id
                    themeId
                    content
                    key
                    mimeType
                    category
                    schema
                    createdAt
                    updatedAt
                    deletable
                    renameable
                    updatable
                  }
                }
              }
              
              
              fragment sections on ThemePreset {
                sections {
                  id
                  sectionId
                  disabled
                  schema {
                    blockSchemas {
                      id
                      limit
                      name
                      settings {
                        id
                        info
                        label
                        settingId
                        type
                      }
                      type
                    }
                    blocksLimit
                    hasPresets
                    id
                    limit
                    maxBlocks
                    name
                    settings {
                      id
                      info
                      label
                      settingId
                      type
                    }
                    type
                  }
                  settings {
                    id
                    settingId
                    value
                    type
                  }
                  type
                  blockOrder
                  blocks {
                    id
                    blockId
                    disabled
                    type
                    settings {
                      id
                      info
                      label
                      settingId
                      type
                    }
                  }
                }
              }
              
              fragment themeSectionSchema on ThemeSection {
                schema {
                  blockSchemas {
                    id
                    limit
                    name
                    settings {
                      id
                      info
                      label
                      settingId
                      type
                    }
                    type
                  }
                  blocksLimit
                  hasPresets
                  id
                  limit
                  maxBlocks
                  name
                  settings {
                    id
                    info
                    label
                    settingId
                    type
                  }
                  type
                }
              }
              """
            +length: 3041
            +name: "GraphQL request"
            +locationOffset: GraphQL\Language\SourceLocation {#2960
              +line: 1
              +column: 1
            }
          }
        }
      }
      +alias: null
      +arguments: GraphQL\Language\AST\NodeList {#3998
        -nodes: []
      }
      +directives: GraphQL\Language\AST\NodeList {#3999
        -nodes: []
      }
      +selectionSet: GraphQL\Language\AST\SelectionSetNode {#4000
        +kind: "SelectionSet"
        +selections: GraphQL\Language\AST\NodeList {#4001
          -nodes: array:5 [
            0 => GraphQL\Language\AST\FieldNode {#4002
              +kind: "Field"
              +name: GraphQL\Language\AST\NameNode {#4003
                +kind: "Name"
                +value: "id"
                +loc: GraphQL\Language\AST\Location {#4004
                  +start: 2575
                  +end: 2577
                  +startToken: GraphQL\Language\Token {#2910}
                  +endToken: GraphQL\Language\Token {#2910}
                  +source: GraphQL\Language\Source {#2959}
                }
              }
              +alias: null
              +arguments: GraphQL\Language\AST\NodeList {#4005
                -nodes: []
              }
              +directives: GraphQL\Language\AST\NodeList {#4006
                -nodes: []
              }
              +selectionSet: null
              +loc: GraphQL\Language\AST\Location {#4007
                +start: 2575
                +end: 2577
                +startToken: GraphQL\Language\Token {#2910}
                +endToken: GraphQL\Language\Token {#2910}
                +source: GraphQL\Language\Source {#2959}
              }
            }
            1 => GraphQL\Language\AST\FieldNode {#4008
              +kind: "Field"
              +name: GraphQL\Language\AST\NameNode {#4009
                +kind: "Name"
                +value: "info"
                +loc: GraphQL\Language\AST\Location {#4010
                  +start: 2586
                  +end: 2590
                  +startToken: GraphQL\Language\Token {#2911}
                  +endToken: GraphQL\Language\Token {#2911}
                  +source: GraphQL\Language\Source {#2959}
                }
              }
              +alias: null
              +arguments: GraphQL\Language\AST\NodeList {#4011
                -nodes: []
              }
              +directives: GraphQL\Language\AST\NodeList {#4012
                -nodes: []
              }
              +selectionSet: null
              +loc: GraphQL\Language\AST\Location {#4013
                +start: 2586
                +end: 2590
                +startToken: GraphQL\Language\Token {#2911}
                +endToken: GraphQL\Language\Token {#2911}
                +source: GraphQL\Language\Source {#2959}
              }
            }
            2 => GraphQL\Language\AST\FieldNode {#4014
              +kind: "Field"
              +name: GraphQL\Language\AST\NameNode {#4015
                +kind: "Name"
                +value: "label"
                +loc: GraphQL\Language\AST\Location {#4016
                  +start: 2599
                  +end: 2604
                  +startToken: GraphQL\Language\Token {#2912}
                  +endToken: GraphQL\Language\Token {#2912}
                  +source: GraphQL\Language\Source {#2959}
                }
              }
              +alias: null
              +arguments: GraphQL\Language\AST\NodeList {#4017
                -nodes: []
              }
              +directives: GraphQL\Language\AST\NodeList {#4018
                -nodes: []
              }
              +selectionSet: null
              +loc: GraphQL\Language\AST\Location {#4019
                +start: 2599
                +end: 2604
                +startToken: GraphQL\Language\Token {#2912}
                +endToken: GraphQL\Language\Token {#2912}
                +source: GraphQL\Language\Source {#2959}
              }
            }
            3 => GraphQL\Language\AST\FieldNode {#4020
              +kind: "Field"
              +name: GraphQL\Language\AST\NameNode {#4021
                +kind: "Name"
                +value: "settingId"
                +loc: GraphQL\Language\AST\Location {#4022
                  +start: 2613
                  +end: 2622
                  +startToken: GraphQL\Language\Token {#2913}
                  +endToken: GraphQL\Language\Token {#2913}
                  +source: GraphQL\Language\Source {#2959}
                }
              }
              +alias: null
              +arguments: GraphQL\Language\AST\NodeList {#4023
                -nodes: []
              }
              +directives: GraphQL\Language\AST\NodeList {#4024
                -nodes: []
              }
              +selectionSet: null
              +loc: GraphQL\Language\AST\Location {#4025
                +start: 2613
                +end: 2622
                +startToken: GraphQL\Language\Token {#2913}
                +endToken: GraphQL\Language\Token {#2913}
                +source: GraphQL\Language\Source {#2959}
              }
            }
            4 => GraphQL\Language\AST\FieldNode {#4026
              +kind: "Field"
              +name: GraphQL\Language\AST\NameNode {#4027
                +kind: "Name"
                +value: "type"
                +loc: GraphQL\Language\AST\Location {#4028
                  +start: 2631
                  +end: 2635
                  +startToken: GraphQL\Language\Token {#2914}
                  +endToken: GraphQL\Language\Token {#2914}
                  +source: GraphQL\Language\Source {#2959}
                }
              }
              +alias: null
              +arguments: GraphQL\Language\AST\NodeList {#4029
                -nodes: []
              }
              +directives: GraphQL\Language\AST\NodeList {#4030
                -nodes: []
              }
              +selectionSet: null
              +loc: GraphQL\Language\AST\Location {#4031
                +start: 2631
                +end: 2635
                +startToken: GraphQL\Language\Token {#2914}
                +endToken: GraphQL\Language\Token {#2914}
                +source: GraphQL\Language\Source {#2959}
              }
            }
          ]
        }
        +loc: GraphQL\Language\AST\Location {#4032
          +start: 2565
          +end: 2643
          +startToken: GraphQL\Language\Token {#2909}
          +endToken: GraphQL\Language\Token {#2915}
          +source: GraphQL\Language\Source {#2959}
        }
      }
      +loc: GraphQL\Language\AST\Location {#4033
        +start: 2556
        +end: 2643
        +startToken: GraphQL\Language\Token {#2908}
        +endToken: GraphQL\Language\Token {#2915}
        +source: GraphQL\Language\Source {#2959}
      }
    }
  ]
  -source: GraphQL\Language\Source {#2959}
  -positions: array:1 [
    0 => 2556
  ]
  -isClientSafe: false
  #category: "internal"
  #extensions: []
  #message: "Argument 1 passed to Nuwave\Lighthouse\Schema\TypeRegistry::get() must be of the type string, array given, called in E:\wwwroot\object\vendor\nuwave\lighthouse\src\Schema\TypeRegistry.php on line 542"
  #code: 0
  #file: "E:\wwwroot\object\vendor\webonyx\graphql-php\src\Error\Error.php"
  #line: 176
  -previous: TypeError {#9336
    #message: "Argument 1 passed to Nuwave\Lighthouse\Schema\TypeRegistry::get() must be of the type string, array given, called in E:\wwwroot\object\vendor\nuwave\lighthouse\src\Schema\TypeRegistry.php on line 542"
    #code: 0
    #file: "E:\wwwroot\object\vendor\nuwave\lighthouse\src\Schema\TypeRegistry.php"
    #line: 123
    trace: {
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\Schema\TypeRegistry.php:123 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\Schema\TypeRegistry.php:542 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Type\Definition\InterfaceType.php:130 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:940 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:789 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:887 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:761 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:887 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:761 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:887 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:761 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:264 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:215 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\Executor.php:156 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\GraphQL.php:162 {}
      E:\wwwroot\object\vendor\webonyx\graphql-php\src\GraphQL.php:94 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:268 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:203 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:162 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:121 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Utils.php:99 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:120 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Http\Controllers\GraphQLController.php:32 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:48 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Route.php:219 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Route.php:176 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:681 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:130 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Http\Middleware\AttemptAuthentication.php:34 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Http\Middleware\AcceptJson.php:27 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:105 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:683 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:658 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:624 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:613 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:170 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:130 {}
      E:\wwwroot\object\vendor\barryvdh\laravel-debugbar\src\Middleware\InjectDebugbar.php:67 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\app\Http\Middleware\ChangeAppUrlMiddleware.php:23 {
        App\Http\Middleware\ChangeAppUrlMiddleware->handle($request, Closure $next) …
        ›     }
        ›     return $next($request);
        › }
        arguments: {
          Illuminate\Http\Request {#53 …}
        }
      }
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:21 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:21 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php:27 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php:63 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\fideloper\proxy\src\TrustProxies.php:57 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\dingo\api\src\Http\Middleware\Request.php:111 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:105 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:145 {}
      E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:110 {}
      E:\wwwroot\object\public\index.php:57 {}
    }
  }
  trace: {
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Error\Error.php:176 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:681 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:666 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:887 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:761 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:887 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:761 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:887 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:761 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:741 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1145 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1106 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:793 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:654 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:557 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:1195 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:264 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\ReferenceExecutor.php:215 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\Executor\Executor.php:156 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\GraphQL.php:162 {}
    E:\wwwroot\object\vendor\webonyx\graphql-php\src\GraphQL.php:94 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:268 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:203 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:162 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:121 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Utils.php:99 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\GraphQL.php:120 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Http\Controllers\GraphQLController.php:32 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:48 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Route.php:219 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Route.php:176 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:681 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:130 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Http\Middleware\AttemptAuthentication.php:34 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\nuwave\lighthouse\src\Support\Http\Middleware\AcceptJson.php:27 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:105 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:683 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:658 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:624 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Routing\Router.php:613 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:170 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:130 {}
    E:\wwwroot\object\vendor\barryvdh\laravel-debugbar\src\Middleware\InjectDebugbar.php:67 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\app\Http\Middleware\ChangeAppUrlMiddleware.php:23 {
      App\Http\Middleware\ChangeAppUrlMiddleware->handle($request, Closure $next) …
      ›     }
      ›     return $next($request);
      › }
      arguments: {
        Illuminate\Http\Request {#53 …}
      }
    }
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:21 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:21 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php:27 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php:63 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\fideloper\proxy\src\TrustProxies.php:57 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\dingo\api\src\Http\Middleware\Request.php:111 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:171 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:105 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:145 {}
    E:\wwwroot\object\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:110 {}
    E:\wwwroot\object\public\index.php:57 {}
  }
}

3、编辑 /vendor/nuwave/lighthouse/src/Schema/TypeRegistry.php,打印 $name。确定其中一个参数的格式为数组。如图3

图3

    /**
     * Get the given GraphQL type by name.
     *
     * @throws \Nuwave\Lighthouse\Exceptions\DefinitionException
     */    public function get($name): Type
    {
        var_dump($name);
        if (! $this->has($name)) {
            throw self::failedToLoadType($name);
        }

        return $this->types[$name];
    }
string(20) "ThemeSettingCheckbox"
string(10) "ThemeBlock"
array(4) {
  ["id"]=>
  object(Modules\ThemeStore\Resolver\Id)#11271 (1) {
    ["prefixes":protected]=>
    array(5) {
      [0]=>
      string(8) "theme"
      [1]=>
      string(7) "current"
      [2]=>
      string(16) "announcement-bar"
      [3]=>
      string(18) "announcement-bar-0"
      [4]=>
      string(5) "style"
    }
  }
  ["settingId"]=>
  string(5) "style"
  ["value"]=>
  string(4) "text"
  ["type"]=>
  string(12) "announcement"
}

4、当删除 settings 后,不再报此错误。如图4

图4

5、分别找到 2 个 settings 字段,皆是 [ThemeSetting!]! 类型。查找代码实现上的差异。可以确定报错的字段并非 [ThemeSetting!]! 类型。

            'blockSchemas' => collect($section->getBlocks())->map(function(Block $block, $blockId) use ($id){
                $id = $id->with('blockSchemas');

                return [
                    'id' => $id->with($blockId),
                    'blockId' => $blockId,
                    'limit' => $block->getLimit(),
                    'name' => $block->getName(),
                    'type' => $block->getType(),
                    'settings' => collect($block->getSettings())->map(function(BaseType $type, $index) use ($id) {
                        return $this->resolveSettingType($type, $id->with('settings'), $index);
                    })
                ];
            }),
            'blocks' => collect($sectionSetting->getBlocks())
                ->map(function(BlockSetting $block, $blockId) use ($sectionSchema, $globalSectionId){
                    $globalBlockId = $globalSectionId->with($blockId);
                    return [
                        'id' => $globalBlockId,
                        'blockId' => $blockId,
                        'disabled' => $block->isDisabled(),
                        'type' => $block->getType(),
                        'settings' => collect($block->getSettings())->map(function($value, $id) use($sectionSchema, $block, $globalBlockId){

                            return [
                                'id' => $globalBlockId->with($id),
                                'settingId' => $id,
                                'value' => $value,
                                'type' => $sectionSchema->getBlock($block->getType())->getType()
                            ];
                        }),
                    ];
                })

6、分别打印正确与错误的 dd($block->getSettings());。再次确证错误的字段并非 ThemeSetting。如图5

图5

array:9 [
  0 => Modules\ThemeSetting\Schema\Types\SelectType {#11172
    -multiple: false
    -options: array:2 [
      0 => array:2 [
        "value" => "text"
        "label" => "使用文本"
      ]
      1 => array:2 [
        "value" => "image"
        "label" => "使用图片"
      ]
    ]
    -id: "style"
    -label: "内容显示"
    -info: null
    -default: "text"
    -type: "select"
  }
  1 => Modules\ThemeSetting\Schema\Types\TextType {#11169
    -heading: null
    -subtext: null
    -placeHolder: null
    -id: "text"
    -label: "Text"
    -info: null
    -default: "Welcome to our store"
    -type: "text"
  }
  2 => Modules\ThemeSetting\Schema\Types\SelectType {#11173
    -multiple: false
    -options: array:5 [
      0 => array:2 [
        "value" => "background-1"
        "label" => "背景色 1"
      ]
      1 => array:2 [
        "value" => "background-2"
        "label" => "背景色 2"
      ]
      2 => array:2 [
        "value" => "inverse"
        "label" => "反转"
      ]
      3 => array:2 [
        "value" => "accent-1"
        "label" => "强调色 1"
      ]
      4 => array:2 [
        "value" => "accent-2"
        "label" => "强调色 2"
      ]
    ]
    -id: "color_scheme"
    -label: "配色方案"
    -info: null
    -default: "background-1"
    -type: "select"
  }
  3 => Modules\ThemeSetting\Schema\Types\CheckboxType {#11171
    -id: "gradient"
    -label: "Gradient"
    -info: null
    -default: false
    -type: "checkbox"
  }
  4 => Modules\ThemeSetting\Schema\Types\UrlType {#11174
    -id: "link"
    -label: "Link"
    -info: null
    -default: null
    -type: "url"
  }
  5 => Modules\ThemeSetting\Schema\Types\ImagePickerType {#11175
    -id: "image"
    -label: "电脑端图片"
    -info: null
    -default: null
    -type: "image_picker"
  }
  6 => Modules\ThemeSetting\Schema\Types\ImagePickerType {#11176
    -id: "mobile_image"
    -label: "移动端图片"
    -info: null
    -default: null
    -type: "image_picker"
  }
  7 => Modules\ThemeSetting\Schema\Types\ColorType {#11177
    -id: "text_color"
    -label: "文字颜色"
    -info: null
    -default: null
    -type: "color"
  }
  8 => Modules\ThemeSetting\Schema\Types\ColorType {#11178
    -id: "background_color"
    -label: "背景颜色"
    -info: null
    -default: null
    -type: "color"
  }
]
array:9 [
  "style" => "text"
  "text" => null
  "color_scheme" => "inverse"
  "gradient" => null
  "link" => "/"
  "image" => null
  "mobile_image" => null
  "text_color" => "white"
  "background_color" => "#000000"
]

7、编辑 /Modules/ThemeStore/Resources/graphql/theme_setting.graphql。因为代码实现的是类型 [ThemeStyleSetting!]。
编辑前:

type ThemeBlock
{
    id: ID!

    blockId: String!

    "Whether the block is disabled."
    disabled: Boolean!

    type: String!

    settings: [ThemeSetting!]!
}

编辑后:

type ThemeBlock
{
    id: ID!

    blockId: String!

    "Whether the block is disabled."
    disabled: Boolean!

    type: String!

    settings: [ThemeStyleSetting!]
}

8、请求响应 200。如图6

图6

永夜