Komponist wirft [ReflectionException] Klasse Fxp\Composer\AssetPlugin\Repository\NpmRepository ist nicht vorhanden

Lesezeit: 5 Minuten

Benutzer-Avatar
Marko Mikulic

Ich habe die neueste Version (1.0.0. stable) von Composer installiert und in meinem Yii2-Projekt Folgendes eingegeben:

php composer.phar update

Es gibt mir diesen Fehler:

[ReflectionException] Klasse Fxp\Composer\AssetPlugin\Repository\NpmRepository ist nicht vorhanden

[ErrorException] Deklaration von Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository::whatProvides() sollte kompatibel sein mit Composer\Repository\ComposerRepository::whatProvides(Composer\DependencyResolver\Pool $pool, $name, $bypassFilters = false)

Kann mir jemand helfen, wie ich das beheben kann?

Hier ist meine composer.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"
        }
    }
}

  • kannst du uns deinen zeigen composer.json?

    – Federkun

    5. April 2016 um 22:01 Uhr

  • @Federico da ist es

    – Marko Mikulić

    5. April 2016 um 22:07 Uhr

Benutzer-Avatar
Federkun

Vor etwa neun Tagen (etwa Ende März 2016) Composer\Repository\ComposerRepository::whatProvides API geändert. (#2668) Also, wenn Sie installiert haben fxp/composer-asset-plugin global sollten Sie es aktualisieren. Sie können das tun mit:

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

  • Leider endet dieser Befehl mit dem gleichen Fehler. Gelöst durch Entfernen ~/.composer Verzeichnis und Neuinstallation fxp/composer-asset-plugin.

    – ezze

    6. April 2016 um 0:59 Uhr

  • danke für das Feedback, habe ich hinzugefügt --no-plugins Möglichkeit zur Antwort.

    – Federkun

    6. April 2016 um 1:05 Uhr

  • Hat nicht geholfen. Nach einem zweiten Anruf bekomme ich ‘Nothing to install or update’. Dann erstellt das Update die gleichen Fehler erneut. Irgendwelche weiteren Ideen?

    – robsch

    8. April 2016 um 10:58 Uhr

  • Arbeiten wie ein Zauber. Danke

    – HerrD

    23. April 2016 um 10:16 Uhr

  • Trotzdem habe ich das gleiche Problem

    – Mohammad Aghayari

    5. November 2016 um 20:11 Uhr

Benutzer-Avatar
Jawid Ahadov

Probieren Sie dieses aus, wenn das Update nicht funktioniert.

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

  • diese feste Mine. Vielen Dank!

    – parpar

    11. Dezember 2017 um 6:58 Uhr

Am Ende habe ich das Problem gelöst, indem ich die entfernt habe fxp Verzeichnis aus dem .composer Verzeichnis. Bei meinem Setup macht das den Trick:

rm -rf ~/.composer/vendor/fxp

Jetzt, wenn etwas es braucht, kann es einfach das aktualisierte Plugin erneut herunterladen.

  • Für Benutzer von Windows: C:\Users\\AppData\Roaming\Composer\vendor

    – Jesse Q

    23. April 2018 um 19:38 Uhr


Benutzer-Avatar
Mohammad Eghlima

Versuchen Sie, Ihre globale composer.json durch Laufen:

vi ~/.composer/composer.json Stellen Sie dann sicher, dass Sie diese Zeile darauf haben:

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

Die obigen Antworten haben bei mir nicht funktioniert, weil die Version von my fxp/composer-asset-plugin war wie 1.1-beta04als ich es geändert habe "1.1.8" und führen Sie den Aktualisierungsbefehl aus:

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

Es hat das Problem behoben. aber ohne meine global zu bearbeiten composer.jsones gab mir diesen Fehler:

Ihre Anforderungen konnten nicht in einen installierbaren Satz von Paketen aufgelöst werden.

Problem 1 – Installationsanforderung für fxp/composer-asset-plugin 1.0.0-beta3 -> erfüllbar durch fxp/composer-asset-plugin[v1.0.0-beta3]. – fxp/composer-asset-plugin v1.0.0-beta3 erfordert composer-plugin-api 1.0.0 -> kein passendes Paket gefunden.

Mögliche Ursachen: – Ein Tippfehler im Paketnamen – Das Paket ist nicht in einer ausreichend stabilen Version gemäß Ihrer Mindeststabilitätseinstellung verfügbar, siehe https://getcomposer.org/doc/04-schema.md#minimum-stability für mehr Details.

Lesen https://getcomposer.org/doc/articles/troubleshooting.md für weitere allgemeine Probleme.

Benutzer-Avatar
Isayevskiy_Sergey

In meinem Fall Projekt auf 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, im Ordner vendor/fxp Sie müssen den Ordner ersetzen composer-asset-plugin oder löschen.

Benutzer-Avatar
Ivo Pereira

Wenn keine der anderen Lösungen für Sie funktioniert hat, versuchen Sie es bitte AssetPackagist als Alternative.

  1. Ergänzen Sie die Pakete Bower-Asset/Bootstrap und npm-asset/jquery zu composer.json wie folgt:

    "require": {
        "bower-asset/bootstrap": "^3.3",
        "npm-asset/jquery": "^2.2"
    }
    
  2. Füge hinzu ein Lagerstätten Block (falls noch keins vorhanden ist, einfach anhängen) mit folgendem Inhalt:

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

  4. Bedenkt, dass Asset-Packagist Assets in einem anderen Verzeichnis installiert, fügen Sie Ihrer Anwendungskonfiguration (normalerweise als web.php bezeichnet) die folgenden Zeilen hinzu:

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

Diese Anweisungen können sich im Laufe der Zeit ändern. Sie wurden von der Repo-Website kopiert, damit sie für den Fall, dass etwas mit der Website passiert, lange Bestand haben. Ich bin nicht der Autor des Repos, aber ich schätze die Mühe, die darin investiert wurde, sehr. Bitte prüfen https://asset-packagist.org/site/about um mehr über das Projekt zu erfahren.


Wenn Sie mit dem Komponisten zu kämpfen haben, haben Sie hier einige nützliche Befehle:

composer clear-cache – Composer-bezogene Caches löschen

composer install -vvv – Fügen Sie den Parameter “vvv” hinzu, um die Ausgabe des Installationsprozesses anzuzeigen (nützlich zum Debuggen)

composer global show – Nützlich, um zu überprüfen, ob Sie bereits haben fxp/composer-asset-plugin Eingerichtet. In meinem Fall war dies bereits der Fall, wurde jedoch nicht als Abhängigkeit erkannt, und die zuvor beschriebene Lösung funktionierte für mich einwandfrei – hoffe, sie funktioniert auch für Sie!

Benutzer-Avatar
Madalin

Sie können eine dauerhafte Lösung vornehmen, indem Sie sie auf globaler Ebene anfordern und sie dann für jedes andere Projekt lösen. Aber stellen Sie dann sicher, dass Sie den Tipp an alle Ihre Teammitglieder weitergeben.

Am besten fügen Sie dies im Projektbereich hinzu und es löst sich auf diese Weise für alle.

So:

composer require fxp/composer-asset-plugin

1349010cookie-checkKomponist wirft [ReflectionException] Klasse Fxp\Composer\AssetPlugin\Repository\NpmRepository ist nicht vorhanden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy