【问题标题】:Laravel Lighthouse Problem with schema validation Undefined Scalar MixedLaravel Lighthouse 模式验证问题未定义标量混合
【发布时间】:2020-06-30 08:45:27
【问题描述】:

我正在尝试验证模式,但遇到了一个非常陌生的错误。当我尝试运行 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


    【解决方案1】:

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

    mll-lab/graphql-php-scalars

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

    【讨论】:

    • 显然如果 mll-lab/graphql-php-scalars 过期了也会出现这个问题。我的 composer.json 确实明确需要这个包,但是从 3=>4 升级解决了同样的问题。感谢理查德为我指明了正确的方向。
    猜你喜欢
    • 2021-06-10
    • 2020-01-18
    • 2013-01-04
    • 2020-11-06
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多