PHP-构建[Spatie \ Cors \ Cors]时无法实例化

时间:2018-10-26 08:22:04

标签: php laravel cors

我对CORS不熟悉。有人已将其添加到该项目中,而我对此并不了解。我一直在尝试将该项目的开发版本部署到实时服务器上,但出现此错误。

Target [Spatie\Cors\CorsProfile\CorsProfile] is not instantiable while building [Spatie\Cors\Cors].

我没有找到太多有关此错误的在线信息。但是,我确实遇到了一个线程,该线程说我需要将提供程序添加到我的config/app.php中,但这在使用php artisan命令时使我陷入了一个新的错误。

Class 'Spatie\Permission\PermissionServiceProvider not found

现在,我知道它在以前的部署中运行良好,因此我不确定是什么触发了这一点。坦白地说,我不想漫无目的地增加这些人的工作量,因为我真的不知道他的用途,并且我一直在尝试了解其用途,以便我可以对其进行修复或重新实现。到目前为止,我还没有运气。有谁知道如何解决这个问题或应该从哪里开始?

php artisan软件包:发现

Discovered Package: fideloper/proxy
Discovered Package: nesbot/carbon
Discovered Package: laravel/tinker
Discovered Package: laravel/cashier
Discovered Package: spatie/laravel-cors
Discovered Package: tymon/jwt-auth
Package manifest generated successfully.

1 个答案:

答案 0 :(得分:1)

对于初学者,Target [...] is not instantiable while building [...]表示绑定到服务容器时出现问题。 通常这是由于未注册软件包的ServiceProvider引起的。

@php artisan package:discover命令由composer运行时(在composer.json中定义),大多数为Laravel 5.5及更高版本开发的软件包将自动注册其服务提供商。在较旧的Laravel版本中,您必须将软件包的服务提供者添加到config/app.php

在您的情况下,将Spatie\Permission\PermissionServiceProvider::class添加到config/app.php提供程序数组不起作用,因为这是一个不同的包Spatie\Permission\Contracts\Permission也是这样-这些都是spatie/laravel-permission的一部分,而不是spatie/laravel-cors

在这种情况下,Spatie\Cors\Cors中间件似乎正在尝试从容器中解析Spatie\Cors\CorsProfile\CorsProfile的实例,而容器不知道如何制造一个。由于您已将配置文件发布到config/cors.php,因此请检查设置是否与他们的github存储库相匹配:https://github.com/spatie/laravel-cors(也许问题出在您的cors_profile设置上?)也可能是命名空间问题。