web-dev-qa-db-fra.com

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

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

php composer.phar update

Cela me donne cette erreur:

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

[ErrorException] La déclaration de Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository :: whatProvides () doit être compatible avec Composer\Repository\ComposerRepository :: whatProvides (Composer\DependencyResolver\Pool $ pool, $ name, $ bypassFilters = false).

Quelqu'un peut-il m'aider à 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"
        }
    }
}
79
Marko Mikulić

Il y a environ neuf jours (vers la fin du mois de mars 2016), Composer\Repository\ComposerRepository::whatProvides api 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
178
Federkun

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

composer global require fxp/composer-asset-plugin --no-plugins
59
Javid Ahadov

J'ai fini par résoudre le problème en supprimant le répertoire fxp du répertoire .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.

22

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

vi ~/.composer/composer.json puis assurez-vous que vous avez cette ligne dessus:

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

les réponses ci-dessus n'ont pas fonctionné pour moi car la version de mon fxp/composer-asset-plugin était comme 1.1-beta04, quand je l'ai changé en "1.1.8" et exécutez la commande de mise à jour:

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

Cela a résolu le problème. mais sans éditer mon global composer.json, ça me donnait cette erreur:

Vos besoins n'ont pas pu être résolus en un ensemble de packages installables.

Problème 1 - Demande d'installation pour fxp/composer-asset-plugin 1.0.0-beta3 -> satisfiable par fxp/composer-asset-plugin [v1.0.0-beta3]. - fxp/composer-asset-plug-in v1.0.0-beta3 requiert composer-plugin-api 1.0.0 -> aucun package correspondant trouvé.

Causes potentielles: - Une typo dans le nom du package - Le package n'est pas disponible dans une version suffisamment stable en fonction de votre paramètre de stabilité minimale, voir https://getcomposer.org/doc/04-schema.md# stabilité minimale pour plus de détails.

Lisez https://getcomposer.org/doc/articles/troubleshooting.md pour connaître les autres problèmes courants.

6
Mohammad Eghlima

Dans mon cas, projet sur Yii2

$ 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 le dossier composer-asset-plugin ou supprimez-le.

2
Isayevskiy_Sergey

Si aucune autre solution ne fonctionne pour vous, essayez plutôt AssetPackagist .

  1. Ajoutez les packages bower-asset/bootstrap et npm-asset/jquery à composer.json comme suit:

    "require": {
        "bower-asset/bootstrap": "^3.3",
        "npm-asset/jquery": "^2.2"
    }
    
  2. Ajoutez un bloc référentiels (si vous n'en avez toujours pas, ajoutez-le simplement) avec le contenu suivant:

    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
    
  3. Courir composer install (ou composer update)

  4. Considérant que asset-packagist installe les actifs dans un répertoire différent, ajoutez les lignes suivantes à la configuration de votre application (généralement appelée web.php):

    $config = [
        'aliases' => [
            '@bower' => '@vendor/bower-asset',
            '@npm'   => '@vendor/npm-asset',
        ],
    ];
    

Ces instructions peuvent changer avec le temps. Ils ont été copiés à partir du site Web du dépôt pour pouvoir être conservés à temps, au cas où quelque chose se produirait. Je ne suis pas l'auteur du rapport, mais j'apprécie vraiment l'effort consenti. Veuillez vérifier https://asset-packagist.org/site/about pour en savoir plus sur le projet.


Si vous vous battez avec composer, voici quelques commandes utiles:

composer clear-cache - Effacer composer caches associés

composer install -vvv - Ajoutez le paramètre "vvv" pour afficher la sortie liée au processus d'installation (utile pour le débogage)

composer global show - Utile pour vérifier si vous avez déjà installé fxp/composer-asset-plugin . Dans mon cas, c’était déjà le cas, mais cela n’a pas été détecté comme une dépendance et la solution que j’ai décrite précédemment a fonctionné sans faille pour moi - espérons que cela fonctionne aussi pour vous!

1
Ivo Pereira