我的朋友安装了oriceon-oauth-5-laravel包,我从git中提取了代码。我运行命令composer update,但它抛出以下错误
异常'Symfony'Component'Debug' exception 'FatalErrorException'与消息'Class 'Artdarek'OAuth'OAuthServiceProvider' not found'在/var/www/html/test/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php:146我通过在app.php文件中注释服务提供者和别名暂时解决了这个问题。
那么,解决这个问题的正确方法是什么?
问题是,在您的config/app.php
文件中,您可能会看到以下内容:
Artdarek'OAuth'OAuthServiceProvider::class,
提供者列表中的。因为还没有安装那个包,所以这个类不存在。我想你已经明白了这一点,因为你说你注释掉了提供程序。
在composer.json
中,您将在scripts下看到:
"pre-update-cmd": [
"php artisan clear-compiled"
],
这意味着无论何时运行composer update
,它首先调用php artisan clear-compiled
,它加载配置文件,由于缺少类而失败。
绕过它的两种方法:
将提供程序更改为字符串中的引号,就像在Laravel 4中那样:
"Artdarek'OAuth'OAuthServiceProvider",
(这就是为什么在Laravel 5/PHP 5.5之前没有人真正遇到这个问题的原因)。还是…
真正解决
只运行composer install
而不是composer update
。这就是你应该做的,因为无论你的队友推送什么,都是在composer.lock
中的库版本上工作的。所以如果你运行install,它是a)安装已知的工作版本和b)绕过php artisan
命令,直到安装完成。
如果您确实必须运行composer update
,那么使用--no-scripts
标志