当我想要求我的项目时,出现以下错误:
请求的包mvc-php/framework在任何版本中都找不到,可能是包名中有拼写错误。
"mvc-php/framework"是一个git文件夹。
{
"name": "mvc-php/app",
"repositories": [
{
"type": "path",
"url": "/Users/youri/Documents/Github/framework"
}
],
"require": {
"php": ">=7.0",
"mvc-php/framework": "master"
},
"autoload": {
"psr-4": {
"App\": "app/"
}
}
}
我想要的项目:
{
"name": "mvc-php/framework",
"description": "PHP MVC framework",
"autoload": {
"psr-4": {
"Mvc\" : "src/"
}
},
"require": {
"php": ">=7.0"
}
}
除了分支名称,还必须要求branchName@dev
{
"name": "mvc-php/app",
"repositories": [
{
"type": "path",
"url": "/Users/youri/Documents/Github/framework"
}
],
"require": {
"php": ">=7.0",
"mvc-php/framework": "master@dev"
},
"autoload": {
"psr-4": {
"App\": "app/"
}
}
}
请求的包X/Y在任何版本中都找不到。
请求的包需要是一个git文件夹,包含已提交的和现有的composer.json
文件。然后要引用特定的分支,需要添加dev-
前缀,所以dev-master
, 而不是master
。
composer.json
{
"require": {
"local/my_package": "dev-master"
},
"repositories": [
{
"packagist.org": false
},
{
"type": "path",
"url": "my_package/"
}
]
}
文件: my_package/composer.json
{
"name": "local/my_package",
"require-dev": {
"symfony/console": "*"
}
}
注意:以上文件位于本地Git存储库下。执行命令git init && git commit -am 'Files'
.
故障排除
要排除问题,请运行:
composer install -vvv
还可以考虑运行:composer diagnose
来识别常见的Composer错误
由于这是在Google上搜索错误文本时的第一响应,因此我也将在这里放置我的修复,尽管不是100%与op相关。
当您需要repo时,您需要确保您的require语句与编写器中的项目名称匹配。
因此,如果名称在框架项目中为"name": "mvc-php/app-framework",
,则需要:
"require": {
"mvc-php/app-framework": "dev-master"
},
当你要添加一个git的repo时,这个更适用。尤其是在分叉的时候,有时候git的url可能与编译器不同。json的名字。
另外(这是与OP相关的部分),您现在需要在需要时执行dev-branch_name
而不是branch_name@dev
。我不知道这是什么时候改变的,或者旧的方法是否不能使用。但这是现在的编写器文档中说的。
如果你想让Composer检出一个分支而不是一个标签,你需要使用特殊的
dev-*
前缀
将它指向分支Composer文档-版本和约束-分支
另一个需要注意的问题:
我更改了我开发的包的名称,并且正在测试它的分支。我已经遵循了上面提到的所有正确的命名约定,但仍然得到了给定的错误。
事实证明,对于名称更改进行拾取,您必须在包repo的主分支(对我来说是Master
)的composer.json
中更新包名称,即使您在项目中不使用该分支。
需要注意的是,如果您没有将自己的镜像源添加到全局变量中,则在未找到子场景的地方会出现错误。你可以在composer.json中添加:
"repositories":[
{
"type":"composer",
"url":"https://packag"
}
],