최신 버전 (1.0.0. stable)의 작곡가를 설치했고 Yii2 프로젝트에서 다음을 입력했습니다.
php composer.phar update
이 오류가 발생합니다.
[ReflectionException] 클래스 Fxp \ Composer \ AssetPlugin \ Repository \ NpmRepository가 없습니다.
[ErrorException] Fxp \ Composer \ AssetPlugin \ Repository \ AbstractAssetsRepository :: whatProvides () 선언은 Composer \ Repository \ ComposerRepository :: whatProvides (Composer \ DependencyResolver \ Pool $ pool, $ name, $ bypassFilters = false)와 호환되어야합니다.
누군가이 문제를 해결하는 방법을 도울 수 있습니까?
여기 내 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"
}
}
}
답변
약 9 일 전 (2016 년 3 월 말경) 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
답변
나는 fxp
디렉토리에서 디렉토리를 제거하여 문제를 해결했습니다 .composer
. 내 설정에서 이것은 트릭을 수행합니다.
rm -rf ~/.composer/vendor/fxp
이제 필요한 것이있을 때 업데이트 된 플러그인을 다시 다운로드 할 수 있습니다.
답변
다음 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
문제가 해결되었습니다. 하지만 내 global을 편집하지 않고 composer.json
다음과 같은 오류가 발생했습니다.
설치 가능한 패키지 세트로 요구 사항을 해결할 수 없습니다.
문제 1-fxp / composer-asset-plugin 1.0.0-beta3에 대한 설치 요청-> fxp / composer-asset-plugin [v1.0.0-beta3]에서 만족할 수 있습니다. -fxp / composer-asset-plugin v1.0.0-beta3에는 composer-plugin-api 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 패키지 를 composer.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', ], ];
이러한 지침은 시간이 지남에 따라 변경 될 수 있습니다. repo 웹 사이트에서 복사되었으므로 웹 사이트에 문제가 발생할 경우를 대비하여 제 시간에 지속될 수 있습니다. 나는 repo의 저자는 아니지만 그것에 대한 노력에 정말 감사합니다. 확인해주십시오프로젝트에 대한 자세한 내용은 https://asset-packagist.org/site/about 을 하십시오 .
composer로 어려움을 겪고 있다면 여기에 몇 가지 유용한 명령이 있습니다.
composer clear-cache
-작곡가 관련 캐시 지우기
composer install -vvv
– “vvv”매개 변수를 추가하여 설치 프로세스 관련 출력을 표시합니다 (디버그에 유용함).
composer global show
-fxp / composer-asset-plugin 이 이미 설치되어 있는지 확인하는 데 유용합니다 . 제 경우에는 이미 그랬지만 종속성으로 감지되지 않았으며 앞서 설명한 솔루션이 나에게 완벽하게 작동했습니다. 여러분에게도 효과가 있기를 바랍니다!
답변
글로벌 수준에서 요구하여 영구적 인 수정을 수행 한 다음 다른 모든 프로젝트에 대해 해결할 수 있습니다. 그러나 모든 팀원에게 팁을 제공해야합니다.
가장 좋은 방법은 이것을 프로젝트 범위에 추가하는 것이며 모든 사람에게 그렇게 해결됩니다.
그래서:
composer require fxp/composer-asset-plugin