작성기에서 [ReflectionException] 클래스 Fxp \ Composer \ AssetPlugin \ Repository \ NpmRepository가 존재하지 않습니다.


80

최신 버전 (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"
        }
    }
}

1
당신은 우리에게 보여줄 수 composer.json있습니까?
Federkun 2016

@Federico 거기
Marko Mikulić

답변:


182

약 9 일 전 (2016 년 3 월 말경) Composer\Repository\ComposerRepository::whatProvidesAPI가 변경되었습니다. ( # 2668 ) 따라서 fxp/composer-asset-plugin전역 적으로 설치했다면 업데이트해야합니다. 다음과 같이 할 수 있습니다.

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

4
불행히도이 명령은 동일한 오류로 끝납니다. ~/.composer디렉토리 를 제거 하고 fxp/composer-asset-plugin.
ezze 2016

4
피드백에 감사 드리며 --no-plugins답변 에 옵션을 추가했습니다 .
Federkun 2016

2
도움이되지 않았습니다. 두 번째 통화 후 '설치 또는 업데이트 할 항목 없음'이 표시됩니다. 그런 다음 업데이트는 동일한 오류를 다시 생성합니다. 추가 아이디어가 있습니까?
robsch

1
매력처럼 작동합니다. Thx
MrD

1
아직 저도 같은 문제가
모하마드 Aghayari

65

업데이트가 작동하지 않으면 이것을 시도하십시오.

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

이 고정 광산. 감사!
parpar

22

나는 fxp디렉토리에서 디렉토리를 제거하여 문제를 해결했습니다 .composer. 내 설정에서 이것은 트릭을 수행합니다.

rm -rf ~/.composer/vendor/fxp

이제 필요한 것이있을 때 업데이트 된 플러그인을 다시 다운로드 할 수 있습니다.


2
Windows를 사용하는 경우 : C : \ Users \ <UserId> \ AppData \ Roaming \ Composer \ vendor
Jesse Q

7

다음 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 를 읽으십시오 .


2

내 경우에는 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하거나 삭제해야합니다.


1

다른 솔루션 중 어느 것도 효과가 없다면 AssetPackagist 를 대안으로 사용해보십시오 .

  1. 다음과 같이 bower-asset / bootstrapnpm-asset / jquery 패키지 를 composer.json에 추가합니다.

    "require": {
        "bower-asset/bootstrap": "^3.3",
        "npm-asset/jquery": "^2.2"
    }
    
  2. 추가하다 다음 콘텐츠와 함께 리포지토리 블록을 (아직없는 경우 추가하면됩니다).

    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
    
  3. 운영 composer install (또는 composer update)

  4. 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 이 이미 설치되어 있는지 확인하는 데 유용합니다 . 제 경우에는 이미 그랬지만 종속성으로 감지되지 않았으며 앞서 설명한 솔루션이 나에게 완벽하게 작동했습니다. 여러분에게도 효과가 있기를 바랍니다!


-1

글로벌 수준에서 요구하여 영구적 인 수정을 수행 한 다음 다른 모든 프로젝트에 대해 해결할 수 있습니다. 그러나 모든 팀원에게 팁을 제공해야합니다.

가장 좋은 방법은 이것을 프로젝트 범위에 추가하는 것이며 모든 사람에게 그렇게 해결됩니다.

그래서:

composer require fxp/composer-asset-plugin

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.