首页 > 解决方案 > Laravel Lighthouse 模式验证问题未定义标量混合

问题描述

我正在尝试验证模式,但遇到了一个非常陌生的错误。当我尝试运行 PHP artisan lighthouse:validate-schema 命令时会发生这种情况。

在此之前,我完全没有遇到过这个问题。事实上,我昨天刚刚安装了这个包,然后它就可以工作了。请注意,这不是基本的灯塔包,我确实定义了架构

{
  "message": "No matching subclass of GraphQL\\Type\\Definition\\ScalarType of found for the scalar Mixed",
  "exception": "Nuwave\\Lighthouse\\Exceptions\\DefinitionException",
  "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Schema/TypeRegistry.php",
  "line": 263,
  "trace": [
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Schema/TypeRegistry.php",
      "line": 194,
      "function": "resolveScalarType",
      "class": "Nuwave\\Lighthouse\\Schema\\TypeRegistry",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Schema/TypeRegistry.php",
      "line": 176,
      "function": "resolveType",
      "class": "Nuwave\\Lighthouse\\Schema\\TypeRegistry",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 130,
      "function": "Nuwave\\Lighthouse\\Schema\\{closure}",
      "class": "Nuwave\\Lighthouse\\Schema\\TypeRegistry",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 105,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Schema/TypeRegistry.php",
      "line": 177,
      "function": "then",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Schema/TypeRegistry.php",
      "line": 147,
      "function": "handle",
      "class": "Nuwave\\Lighthouse\\Schema\\TypeRegistry",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/webonyx/graphql-php/src/Type/Schema.php",
      "line": 164,
      "function": "possibleTypes",
      "class": "Nuwave\\Lighthouse\\Schema\\TypeRegistry",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/webonyx/graphql-php/src/Type/Schema.php",
      "line": 133,
      "function": "resolveAdditionalTypes",
      "class": "GraphQL\\Type\\Schema",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Schema/SchemaBuilder.php",
      "line": 91,
      "function": "__construct",
      "class": "GraphQL\\Type\\Schema",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/GraphQL.php",
      "line": 224,
      "function": "build",
      "class": "Nuwave\\Lighthouse\\Schema\\SchemaBuilder",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/GraphQL.php",
      "line": 157,
      "function": "prepSchema",
      "class": "Nuwave\\Lighthouse\\GraphQL",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/GraphQL.php",
      "line": 110,
      "function": "executeQuery",
      "class": "Nuwave\\Lighthouse\\GraphQL",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Support/Http/Controllers/GraphQLController.php",
      "line": 70,
      "function": "executeRequest",
      "class": "Nuwave\\Lighthouse\\GraphQL",
      "type": "->"
    },
    {
      "function": "query",
      "class": "Nuwave\\Lighthouse\\Support\\Http\\Controllers\\GraphQLController",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
      "line": 54,
      "function": "call_user_func_array"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
      "line": 45,
      "function": "callAction",
      "class": "Illuminate\\Routing\\Controller",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
      "line": 219,
      "function": "dispatch",
      "class": "Illuminate\\Routing\\ControllerDispatcher",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
      "line": 176,
      "function": "runController",
      "class": "Illuminate\\Routing\\Route",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
      "line": 681,
      "function": "run",
      "class": "Illuminate\\Routing\\Route",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 130,
      "function": "Illuminate\\Routing\\{closure}",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/nuwave/lighthouse/src/Support/Http/Middleware/AcceptJson.php",
      "line": 30,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Nuwave\\Lighthouse\\Support\\Http\\Middleware\\AcceptJson",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 105,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
      "line": 683,
      "function": "then",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
      "line": 658,
      "function": "runRouteWithinStack",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
      "line": 624,
      "function": "runRoute",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
      "line": 613,
      "function": "dispatchToRoute",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
      "line": 170,
      "function": "dispatch",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 130,
      "function": "Illuminate\\Foundation\\Http\\{closure}",
      "class": "Illuminate\\Foundation\\Http\\Kernel",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
      "line": 21,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
      "line": 21,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
      "line": 27,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
      "line": 63,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/fideloper/proxy/src/TrustProxies.php",
      "line": 57,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Fideloper\\Proxy\\TrustProxies",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/spatie/laravel-cors/src/Cors.php",
      "line": 41,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 171,
      "function": "handle",
      "class": "Spatie\\Cors\\Cors",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
      "line": 105,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
      "line": 145,
      "function": "then",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
      "line": 110,
      "function": "sendRequestThroughRouter",
      "class": "Illuminate\\Foundation\\Http\\Kernel",
      "type": "->"
    },
    {
      "file": "/home/richard/Projects/snaptuity-api/public/index.php",
      "line": 55,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Kernel",
      "type": "->"
    },
    {
      "file": "/home/richard/.config/composer/vendor/cpriego/valet-linux/server.php",
      "line": 232,
      "function": "require"
    }
  ]
}

这是完整的堆栈跟踪。

但是它说No matching subclass of GraphQL\\Type\\Definition\\ScalarType of finding for the scalar Mixed,我已经验证我从未声明任何标量类型“混合”

标签: laravel-lighthouse

解决方案


经过大量挖掘,我发现我安装软件包的方式都是错误的。

mll-lab/graphql-php-scalars

我们安装的某个软件包需要它。但是由于某种原因,它根本没有被下载到供应商文件夹中,可能是因为 composer.lock 文件搞砸了。


推荐阅读