我刚刚在packagist
上安装了一个包,并尝试运行composer update
,结果出现错误:
Unknown downloader type: h. Available types: git, svn, hg, perforce, zip, rar, tar, gzip, phar, file.
在主项目文件中,我有这样的:
"require": {
//.......
"cyphix333/sbb-code-parser": "dev-master"
},
cyphix333/sbb-code-parser
的composer.json
文件为:
{
"name": "cyphix333/sbb-code-parser",
"description": "SBBCodeParser is a simple BBCode parser",
"keywords": [
"SBBCodeParser"
],
"homepage": "https://github.com/samclarke/SBBCodeParser",
"canonical": "https://github.com/cyphix333/SBBCodeParser",
"source": "https://github.com/cyphix333/SBBCodeParser/tree/master",
"autoload": {
"classmap": ["SBBCodeParser.php","classes/"]
},
"authors": [
{
"name": "Sam Clarke"
}
],
"require": {
"php": ">=5.3"
}
}
我不确定我在这里做错了什么?
如果刚开始出现此错误,请尝试composer clear-cache
和/或删除~/.composer
和vendor
。
我得到的具体错误是:
[InvalidArgumentException]
Unknown downloader type: . Available types: git, svn, fossil, hg, perforce, zip, rar, tar, gzip, xz, phar,
file, path.
我只是删除了所有内容,然后再试一次;现在工作。
我正在使用
Composer version 1.2.0 2016-07-19 01:28:52
我已经解决了删除供应商目录的问题。
rm -Rf vendor
然后运行:
composer update
对composer.json的更改:删除了规范和源代码;添加了类型库。
试试这个:
{
"name": "cyphix333/sbb-code-parser",
"description": "SBBCodeParser is a simple BBCode parser",
"homepage": "https://github.com/samclarke/SBBCodeParser",
"keywords": ["SBBCodeParser"],
"type": "library",
"authors": [
{
"name": "Sam Clarke"
}
],
"require": {
"php": ">=5.3"
},
"autoload": {
"classmap": ["SBBCodeParser.php", "classes/"]
}
}
我在更新composer版本后解决了这个错误。
安装无法使用composer v2。传递到v1版本有效。
composer self-update --1
我也遇到了这个问题,我们的composer.json
中出现了人为错误。我们的一个自定义存储库的dist
部分输入了错误的下载器类型(如错误消息中所述)。
{
"type": "package",
"package": {
"name": "campaignmonitor/createsend-php",
"type": "drupal-library",
"version": "dev-master",
"dist": {
"url": "https://github.com/campaignmonitor/createsend-php.git",
"type": "drupal-library"
},
"source": {
"url": "https://github.com/campaignmonitor/createsend-php.git",
"type": "git",
"reference": "master"
}
}
}
请注意,dist
的type
输入为drupal-library
,即包类型,而不是下载器类型。我们对dist
使用以下内容进行了更正:
"dist": {
"url": "https://github.com/campaignmonitor/createsend-php/archive/master.zip",
"type": "zip"
},
当我们开发这个项目时,我们在本地运行composer install
时没有遇到任何问题。我们在使用--prefer-dist
准备项目生产时遇到了这个错误。显然,它只会在source
上使用dist
,然后遇到这个错误。
免责声明:这个案例与最初的问题有些不同,尽管它具有高度的相关性,并且这个问题在试图搜索答案时出现在顶部。我希望这没关系。