【发布时间】:2020-04-14 18:04:13
【问题描述】:
我从 git 派生了一个 api 处理程序,我需要更新它以兼容 laravel 6 (api handler that i forked what is not laravel 6 compatible),但我不断收到 composer 错误
所以当我运行composer update 时,它会从 git 安装包并将其正确放在供应商文件夹中。什么工作正常,然后我像这样将类添加到config/app.php
'providers' => [
Name\ApiHandler\ApiHandlerServiceProvider::class,
],
什么会在 laravel 中抛出这个错误
In ProviderRepository.php line 208:
Class 'Name\ApiHandler\ApiHandlerServiceProvider' not found
到目前为止我已经尝试过:
-
composer clear-cache rm -rf .cache/composer/*- 清除引导作曲家
- 删除
composer.lock - 删除
vendor
然后是composer update,但它一直抛出错误。但是当我在我的编辑器中并转到 config/app.php 并在按住 ctrl 的同时单击 Name\ApiHandler\ApiHandlerServiceProvider::class, 它会找到该类并转到供应商地图,因此我的想法表明该类已正确导入
这是 laravel 项目中 composer.json 的样子
"repositories": [
{
"type":"package",
"package": {
"name": "name/laravel-api-handler",
"version":"dev-laravel-6",
"source": {
"url": "https://github.com/name/laravel-api-handler",
"type": "git",
"reference":"branch name"
}
}
}
],
"require": {
"name/laravel-api-handler": "dev-laravel-6",
},
api 处理程序 composer.json
"autoload": {
"psr-4": {
"name\\ApiHandler\\": "src"
}
},
"extra": {
"laravel": {
"providers": [
"name\\ApiHandler\\ApiHandlerServiceProvider"
]
}
},
地图结构为vendor/name/laravel-api-handler/src
当运行Composer update 或Composer install 时,自定义包也不会显示在Discovered Package 中
我错过了什么是因为我不知道出了什么问题
【问题讨论】:
-
我可以看到,这个包已经过时了,最近没有更新。更好的办法是避免使用这个包。
-
是的,我知道为什么我在这种情况下分叉并更新了它,但我无法让作曲家工作
-
您是否将包中所有文件的名称空间更改为新的名称空间?所以
Name\ApiHandler\ApiHandlerServiceProvider实际上是在Name\ApiHandler命名空间中,而不是在旧的命名空间中。可能是它根本没有自动加载。我很确定您可以通过composer dumpauto -vvv获取有关正在加载的内容的更多详细信息。 -
它读取 composer.json 文件但没有加载到包中我还重新检查了所有命名空间都被正确替换供应商中的所有文件都有命名空间
Name\ApiHandler只有Name\ApiHandler\ApiHandlerServiceProvider在config/app,php是这样设置的吗?我的想法表明它正确地进入了那个供应商地图
标签: php laravel composer-php laravel-6