Nhà soạn nhạc ném [ReflectionException] Class Fxp \ Composer \ AssetPlugin \ Repository \ NpmRepository không tồn tại


80

Tôi đã cài đặt phiên bản mới nhất (1.0.0. Ổn định) của trình soạn nhạc và trong dự án Yii2 của mình, tôi đã nhập:

php composer.phar update

Nó cho tôi lỗi này:

[ReflectionException] Lớp Fxp \ Composer \ AssetPlugin \ Repository \ NpmRepository không tồn tại

[ErrorException] Khai báo Fxp \ Composer \ AssetPlugin \ Repository \ AbstractAssetsRepository :: whatProvides () phải tương thích với Composer \ Repository \ ComposerRepository :: whatProvides (Composer \ DependencyResolver \ Pool $ pool, $ name, $ bypassFilters = false)

Ai đó có thể giúp tôi cách sửa lỗi này không?

Đây là nhà soạn nhạc của tôi.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
bạn có thể chỉ cho chúng ta của bạn composer.json?
Federkun

@Federico đây rồi
Marko Mikulić

Câu trả lời:


182

Khoảng chín ngày trước (khoảng cuối tháng 3 năm 2016), Composer\Repository\ComposerRepository::whatProvidesapi đã thay đổi. ( # 2668 ) Vì vậy, nếu bạn đã cài đặt fxp/composer-asset-plugintoàn cầu, bạn nên cập nhật nó. Bạn có thể làm điều đó với:

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

4
Thật không may, lệnh này kết thúc với cùng một lỗi. Giải quyết bằng cách xóa ~/.composerthư mục và cài đặt lại fxp/composer-asset-plugin.
ezze

4
cảm ơn vì phản hồi, tôi đã thêm --no-pluginstùy chọn vào câu trả lời.
Federkun

2
Đã không giúp được gì. Sau cuộc gọi thứ hai, tôi nhận được "Không có gì để cài đặt hoặc cập nhật". Sau đó cập nhật sẽ tạo ra các lỗi giống nhau. Bất kỳ ý tưởng thêm?
robsch

1
Làm việc như một cái duyên. Thx
MrD

1
Tôi vẫn gặp vấn đề tương tự
Mohammad Aghayari

65

Hãy thử cái này nếu cập nhật không hoạt động.

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

mỏ cố định này. Cảm ơn!
parpar

22

Tôi đã kết thúc giải quyết vấn đề bằng cách xóa fxpthư mục khỏi .composerthư mục. Trên thiết lập của tôi, đây là mẹo:

rm -rf ~/.composer/vendor/fxp

Giờ đây, khi cần thứ gì đó, nó có thể tải lại plugin đã cập nhật.


2
Đối với những người sử dụng Windows: C: \ Users \ <UserId> \ AppData \ Roaming \ Composer \ nhà cung cấp
Jesse Q

7

Cố gắng chỉnh sửa toàn cầu của bạn composer.jsonbằng cách chạy:

vi ~/.composer/composer.json sau đó đảm bảo rằng bạn có dòng này trên đó:

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

các câu trả lời trên không hoạt động đối với tôi vì phiên bản của tôi fxp/composer-asset-plugingiống như vậy 1.1-beta04, khi tôi thay đổi nó thành "1.1.8"và chạy lệnh cập nhật:

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

Nó đã khắc phục sự cố. nhưng không chỉnh sửa toàn cầu của tôi composer.json, nó đã gây ra cho tôi lỗi này:

Không thể giải quyết các yêu cầu của bạn đối với một bộ gói có thể cài đặt được.

Sự cố 1 - Yêu cầu cài đặt cho fxp / composer-asset-plugin 1.0.0-beta3 -> được fxp / composer-asset-plugin [v1.0.0-beta3] đáp ứng. - fxp / composer-asset-plugin v1.0.0-beta3 yêu cầu composer-plugin-api 1.0.0 -> không tìm thấy gói phù hợp.

Nguyên nhân có thể xảy ra: - Lỗi đánh máy trong tên gói - Gói không có sẵn trong phiên bản đủ ổn định theo cài đặt độ ổn định tối thiểu của bạn, hãy xem https://getcomposer.org/doc/04-schema.md#minimum-stability for chi tiết hơn.

Đọc https://getcomposer.org/doc/articles/troubleshooting.md để biết thêm các sự cố thường gặp khác.


2

Trong trường hợp của tôi, dự án trên 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, trong thư mục vendor/fxpbạn cần phải thay thế thư mục composer-asset-pluginhoặc xóa nó.


1

Nếu không có giải pháp nào khác phù hợp với bạn, vui lòng thử AssetPackagist làm giải pháp thay thế.

  1. Thêm các gói bower-asset / bootstrapnpm-asset / jquery vào composer.json như sau:

    "require": {
        "bower-asset/bootstrap": "^3.3",
        "npm-asset/jquery": "^2.2"
    }
    
  2. Thêm một khối kho lưu trữ (nếu bạn vẫn chưa có, nếu có, chỉ cần thêm vào nó) với nội dung sau:

    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
    
  3. Chạy composer install(hoặc composer update)

  4. Xem xét rằng tài sản-packagist cài đặt tài sản trong một thư mục khác, hãy thêm các dòng sau vào cấu hình ứng dụng của bạn (thường được gọi là web.php):

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

Các hướng dẫn này có thể thay đổi theo thời gian. Chúng đã được sao chép từ trang web repo để chúng có thể tồn tại kịp thời trong trường hợp có điều gì đó xảy ra với trang web. Tôi không phải là tác giả của repo nhưng tôi thực sự đánh giá cao nỗ lực của nó. Vui lòng truy cập https://asset-packagist.org/site/about để biết thêm về dự án.


Nếu bạn đang gặp khó khăn với trình soạn nhạc, thì đây là một số lệnh hữu ích:

composer clear-cache - Xóa bộ nhớ đệm liên quan đến nhà soạn nhạc

composer install -vvv - Thêm tham số "vvv" để hiển thị đầu ra liên quan đến quá trình cài đặt (hữu ích để gỡ lỗi)

composer global show- Hữu ích để kiểm tra xem bạn đã cài đặt plugin fxp / composer-asset-plugin chưa . Trong trường hợp của tôi, nó đã xảy ra, tuy nhiên nó không bị phát hiện là phụ thuộc và giải pháp mà tôi mô tả trước đó đã hoạt động hoàn hảo với tôi - hy vọng nó cũng hiệu quả với bạn!


-1

Bạn có thể thực hiện một bản sửa lỗi vĩnh viễn bằng cách yêu cầu nó ở cấp độ toàn cầu và sau đó nó được giải quyết cho mọi dự án khác. Nhưng sau đó hãy đảm bảo rằng bạn đưa tiền boa cho tất cả các thành viên trong nhóm của mình.

Tốt nhất là thêm điều này vào phạm vi dự án và nó giải quyết cho mọi người theo cách đó.

Vì thế:

composer require fxp/composer-asset-plugin

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.