Композитор бросает [ReflectionException] класс FxpComposerAssetPluginRepositoryNpmRepository не существует
Я установил последнюю версию (1.0.0. стабильный) композитора и в моем проекте Yii2 я набрал это:
php composer.phar update
это дает мне эту ошибку:
[ReflectionException] класс FxpComposerAssetPluginRepositoryNpmRepository не существует
[ErrorException] объявление FxpComposerAssetPluginRepositoryAbstractAssetsRepository:: whatProvides() должно быть совместимо с ComposerRepositoryComposerRepository:: whatProvides(ComposerDependencyResolverPool $pool, $name, $bypassFilters = false)
может кто-нибудь помочь мне, как это исправить?
вот мой композитор.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"
}
}
}
7 ответов:
около девяти дней назад (около конца марта 2016 года),
Composer\Repository\ComposerRepository::whatProvides
api изменен. (#2668) Итак, если вы установилиfxp/composer-asset-plugin
в мире, вы должны обновить его. Вы можете сделать это с:php composer.phar global update fxp/composer-asset-plugin --no-plugins
попробуйте если обновления не работает.
composer global require fxp/composer-asset-plugin --no-plugins
попробуйте отредактировать свой глобальный
composer.json
работает:
vi ~/.composer/composer.json
тогда убедитесь, что у вас есть эта строка на нем:{ "require": { "fxp/composer-asset-plugin": "1.1.*" } }
приведенные выше ответы не работают для меня, потому что версия моего
fxp/composer-asset-plugin
был бы1.1-beta04
, когда я изменил его на"1.1.8"
и запустить обновление команды:php /usr/bin/composer global update fxp/composer-asset-plugin --no-plugins
Исправлена проблема. но без редактирования моего глобального
composer.json
, это дает мне эту ошибку:ваши требования не могут быть разрешены в установочный набор пакетов.
1 - Запрос на установку по FXP/композитор-актива-плагин 1.0.0-beta3 в -> удовлетворены загрузки/композитор-актива-плагин[В1.0.0-бета 3]. - сайт FXP/композитор-актив-плагина v1.0.0-beta3 в требует от композитора-плагин-АПИ 1.0.0 -> соответствующий пакет нашли.возможные причины: - Опечатка в имени пакета - Пакет не доступен в стабильной-достаточно версии в соответствии с вашим минимальной стабильности смотрите https://getcomposer.org/doc/04-schema.md#minimum-stability для более подробной информации.
читать https://getcomposer.org/doc/articles/troubleshooting.md для дальнейших общих проблем.
в моем случае проект на 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, в папке
vendor/fxp
вам нужно заменить папкуcomposer-asset-plugin
или удалить его.
если ни одно из других решений не сработало для вас, попробуйте AssetPackagist в качестве альтернативы.
добавить пакетовbower-asset / bootstrap и npm-asset / jquery для композитора.json нравится следующее:
"require": { "bower-asset/bootstrap": "^3.3", "npm-asset/jquery": "^2.2" }
добавить репозитории блок (если у вас все еще нет одного, если вы это сделаете, просто добавьте к нему) со следующим содержание:
"repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ]
выполнить
composer install
(илиcomposer update
)учитывая, что asset-packagist устанавливает активы в другой каталог, добавьте следующие строки в конфигурацию приложения (обычно называется web.php):
$config = [ 'aliases' => [ '@bower' => '@vendor/bower-asset', '@npm' => '@vendor/npm-asset', ], ];
эти инструкции могут меняться с течением времени. Они были скопированы с веб-сайта репо, чтобы они могли длиться во времени на случай, если что-то случится с веб-сайтом. Я я не являюсь автором РЕПО, но я действительно ценю усилия, приложенные к нему. Пожалуйста, проверьте https://asset-packagist.org/site/about чтобы узнать больше о проекте.
если вы боретесь с композитором, здесь у вас есть некоторые полезные команды:
composer clear-cache
- очистить связанные с композитором кэши
composer install -vvv
- добавьте параметр "vvv" для отображения вывода, связанного с процессом установки (полезно для отладки)
composer global show
- полезно проверьте, если у вас уже есть fxp / composer-asset-plugin установлен. В моем случае это уже было, однако это не было обнаружено как зависимость, и решение, которое я описал ранее, работало безупречно для меня - надеюсь, что оно работает и для вас тоже!
вы можете сделать постоянное исправление, требуя его на глобальном уровне, а затем он решается для каждого другого проекта. Но затем убедитесь, что вы даете совет всем членам вашей команды.
лучше всего добавить это в область проекта, и это решает для всех таким образом.
Так:
composer require fxp/composer-asset-plugin