PHP - не создается при сборке [Spatie \ Cors \ Cors] - PullRequest
0 голосов
/ 26 октября 2018

Я не знаком с CORS.Кто-то добавил его в этот проект, и я мало что знаю об этом.Я пытался развернуть dev-версию этого проекта на работающем сервере, но я получаю эту ошибку.

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 package: Откройте для себя

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 голосов
/ 26 октября 2018

Для начала, Target [...] is not instantiable while building [...] указывает на проблему с привязкой к сервисному контейнеру. Обычно это вызвано тем, что ServiceProvider пакета не зарегистрирован.

Большинство пакетов, разработанных для Laravel 5.5 и выше, автоматически регистрируют своих поставщиков услуг, когда команда @php artisan package:discover запускается composer (это определено в composer.json). В более старых версиях Laravel вам пришлось бы добавить поставщика услуг для пакета в config/app.php.

В вашем случае добавление Spatie\Permission\PermissionServiceProvider::class в массив config/app.php provider не сработало, потому что это другой пакет . То же самое касается 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?). Это также может быть проблема с пространством имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...