80 votes

Composer lève [ReflectionException] La classe Fxp \ Composer \ AssetPlugin \ Repository \ NpmRepository n'existe pas

J'ai installé la dernière version (la version 1.0.0. stable) du compositeur et dans mon Yii2 projet, j'ai tapé ceci:

php composer.phar update

Il me donne cette erreur:

[ReflectionException] Classe Fxp\Compositeur\AssetPlugin\Repository\NpmRepository n'existe pas

[ErrorException] Déclaration de Fxp\Compositeur\AssetPlugin\Repository\AbstractAssetsRepository::whatProvides() doit être compatible avec le Compositeur\Repository\ComposerRepository::whatProvides(Compositeur\DependencyResolver\Pool $piscine, $nom, $bypassFilters = false)

Quelqu'un peut m'aider comment résoudre ce problème?

Voici mon compositeur.json

{
    "name": "yiisoft/yii2-app-advanced",
    "description": "Yii 2 Advanced Project Template",
    "keywords": ["yii2", "framework", "advanced", "project template"],
    "homepage": "http://www.yiiframework.com/",
    "type": "project",
    "license": "BSD-3-Clause",
    "support": {
        "issues": "https://github.com/yiisoft/yii2/issues?state=open",
        "forum": "http://www.yiiframework.com/forum/",
        "wiki": "http://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
    "minimum-stability": "stable",
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.6",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "kartik-v/yii2-widget-fileinput": "@dev",
        "golonka/bbcodeparser": "^2.2"
    },
    "require-dev": {
        "yiisoft/yii2-codeception": "*",
        "yiisoft/yii2-debug": "*",
        "yiisoft/yii2-gii": "*",
        "yiisoft/yii2-faker": "*"
    },
    "config": {
        "process-timeout": 1800
    },
    "extra": {
        "asset-installer-paths": {
            "npm-asset-library": "vendor/npm",
            "bower-asset-library": "vendor/bower"
        }
    }
}

180voto

Federkun Points 12908

Il y a environ neuf jours, Composer\Repository\ComposerRepository::whatProvides api a changé. ( # 2668 ) Donc, si vous avez installé fxp/composer-asset-plugin globalement, vous devriez le mettre à jour. Vous pouvez le faire avec:

 php composer.phar global update fxp/composer-asset-plugin --no-plugins
 

67voto

Javid Ahadov Points 372

Essayez celui-ci si la mise à jour ne fonctionne pas.

 composer global require fxp/composer-asset-plugin --no-plugins
 

22voto

Alexander O'Mara Points 23319

J'ai fini par résoudre le problème en supprimant le fxp répertoire de la .composer répertoire. Sur ma configuration, ceci fait le tour:

 rm -rf ~/.composer/vendor/fxp
 

Maintenant, quand quelque chose en a besoin, il peut simplement télécharger à nouveau le plugin mis à jour.

7voto

Mohammad Eghlima Points 352

Essayez de modifier votre global composer.json en exécutant:

vi ~/.composer/composer.json alors assurez-vous d'avoir cette ligne:

{
    "require": {
        "fxp/composer-asset-plugin": "1.1.*"
    }
}

les réponses ci-dessus ne fonctionne pas pour moi parce que la version de mon fxp/composer-asset-plugin était comme 1.1-beta04, lorsque je l'ai changé pour "1.1.8" et exécuter la mise à jour de commande:

php /usr/bin/composer global update fxp/composer-asset-plugin --no-plugins

Il a résolu le problème. mais sans modifier mes composer.json, il me faisait cette erreur:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for fxp/composer-asset-plugin 1.0.0-beta3 -> satisfiable by fxp/composer-asset-plugin[v1.0.0-beta3].
    - fxp/composer-asset-plugin v1.0.0-beta3 requires composer-plugin-api 1.0.0 -> no matching package found.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

2voto

user3519897 Points 119

Dans mon cas, projet sur Yii2

 [isv@hosting]$ composer

  [ReflectionException]
  Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist


  [ErrorException]
  Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository
  ::whatProvides() should be compatible with Composer\Repository\ComposerRepo
  sitory::whatProvides(Composer\DependencyResolver\Pool $pool, $name, $bypass
  Filters = false)
 

Yii2, dans le dossier " vendor/fxp ", vous devez remplacer un dossier " composer-asset-plugin " ou supprimer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X