'Composer - Unknown downloader type: h - Getting this error for a repo on packigist

I just put up a package on packagist and I tried to run a composer update and am getting the error:

Unknown downloader type: h. Available types: git, svn, hg, perforce, zip, rar, tar, gzip, phar, file.

In the main project file I have this:

"require": {
    //.......
    "cyphix333/sbb-code-parser": "dev-master"
},

The composer.json file for cyphix333/sbb-code-parser is:

{
    "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"
    }
}

I am not sure what I am doing wrong here?



Solution 1:[1]

Changes to your composer.json: dropped canonical and source; added type library.

Give this one a try:

{
    "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/"]
    }
}

Solution 2:[2]

If you just started getting this error, try composer clear-cache and/or delete ~/.composer and vendor.

The specific error I was getting was:

  [InvalidArgumentException]                                                                                  
  Unknown downloader type: . Available types: git, svn, fossil, hg, perforce, zip, rar, tar, gzip, xz, phar,  
   file, path.     

I just deleted everything and then tried again; works now.

I'm using

Composer version 1.2.0 2016-07-19 01:28:52

Solution 3:[3]

I've solved this issue deleting the vendor directory.

rm -Rf vendor

And then running:

composer update

Solution 4:[4]

I encountered this issue too, we had a human error in our composer.json. The dist part of one of our custom repositories was entered with a faulty downloader type (as stated in the error message).

  {
    "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"
      }
    }
  }

Note that the dist's type is entered as drupal-library, that is the package type, not the downloader type. We corrected this by using the following for dist:

      "dist": {
        "url": "https://github.com/campaignmonitor/createsend-php/archive/master.zip",
        "type": "zip"
      },

As we developed this project we had no problems when running composer install locally. We encountered this error when making the project production ready, using --prefer-dist. Obviously, it will only then use dist over source and then encounter this error.

Disclaimer: This case is somewhat different then the original question, though it's highly relatable and this question came up on top when trying to search for the answer. I hope this is okay.

Solution 5:[5]

I did resolve this error after updating the composer version.

The installation did not work with composer v2. Passing to the v1 version works.

composer self-update --1

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Jens A. Koch
Solution 2 mpen
Solution 3 Davide Casiraghi
Solution 4 Ambidex
Solution 5 Paul Leclerc