最近,我安装了一个软件包LaravelFacebookSdk
。
安装
我通过添加
来更新我的composer.json
"sammyk/laravel-facebook-sdk": "~3.0"
然后,我运行 composer update
服务提供商
在我的 /config/app.php
中,我将 LaravelFacebookSdkServiceProvider
添加到 providers 数组。
'providers' => [
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
];
一切正常。然后,我将它推送到我的存储库。
问题来了!
第二个开发人员进来做了一个git pull
并运行composer update
他会报错
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
未定义。因为,我在 providers 数组下的 /config/app.php
中声明了这一点。
他必须注释掉那行,然后先运行composer update
。成功安装所有内容后,返回并再次取消注释该行。
其他开发人员是否每次都必须这样做,我们安装了一个新包?
我在这里遗漏了什么吗?
如果我做错了什么,请多多指教。
最佳答案
这里的问题是 php artisan clear-compiled
命令被配置为在 composer.json
文件中的更新过程之前运行。由于 artisan
是 Laravel 应用程序不可或缺的一部分,因此当应用程序代码有问题时它会提示。由于您有一个尚未存在的类的引用,它会吐出 RuntimeException
。您可以通过将该命令从 pre-update-cmd
列表移动到 composer.json
中的 post-update-cmd
列表来解决此问题。
所以改变这个:
"scripts": {
...
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
到这里:
"scripts": {
...
"pre-update-cmd": [
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
]
},
现在,当引用的 LaravelFacebookSdkServiceProvider
类存在时,clear-compiled
命令将在更新过程后运行,因此不再有错误。
关于php - 如何在 Laravel 中正确安装包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726101/