我对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.
答案 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
设置上?)也可能是命名空间问题。