Composer 抛出 [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository 不存在

Posted

技术标签:

【中文标题】Composer 抛出 [ReflectionException] Class Fxp\\Composer\\AssetPlugin\\Repository\\NpmRepository 不存在【英文标题】:Composer throws [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not existComposer 抛出 [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository 不存在 【发布时间】:2016-07-26 01:42:57 【问题描述】:

我安装了 composer 的最新版本(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"
        
    

【问题讨论】:

你能告诉我们你的composer.json吗? @Federico 来了 【参考方案1】:

大约 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目录并重新安装fxp/composer-asset-plugin解决。 感谢您的反馈,我已在答案中添加了--no-plugins 选项。 没有帮助。第二次通话后,我得到“无需安装或更新”。然后更新将再次创建相同的错误。还有什么想法吗? 像魅力一样工作。谢谢 我还是有同样的问题【参考方案2】:

如果更新不起作用,试试这个。

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

【讨论】:

这个固定的地雷。谢谢!【参考方案3】:

您可以通过在全局级别要求它来进行永久修复,然后为所有其他项目解决它。但是,请确保将小费提供给所有团队成员。

最好是在项目范围内添加它,这样就可以解决每个人的问题。

所以:

composer require fxp/composer-asset-plugin

【讨论】:

【参考方案4】:

我最终通过从.composer 目录中删除fxp 目录解决了这个问题。在我的设置中,这可以解决问题:

rm -rf ~/.composer/vendor/fxp

现在当有什么需要时,它可以重新下载更新的插件。

【讨论】:

对于那些使用 Windows 的用户:C:\Users\\AppData\Roaming\Composer\vendor【参考方案5】:

尝试通过运行来编辑您的全局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/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了解更多常见问题。

【讨论】:

【参考方案6】:

在我的 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文件夹需要替换或删除。

【讨论】:

【参考方案7】:

如果其他解决方案都不适合您,请尝试AssetPackagist 作为替代方案。

    packages bower-asset/bootstrapnpm-asset/jquery 添加到 composer.json,如下所示:

    "require": 
        "bower-asset/bootstrap": "^3.3",
        "npm-asset/jquery": "^2.2"
    
    

    添加一个 repositories 块(如果您还没有,如果有,只需附加到它),内容如下:

    "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 网站复制的,因此它们可以及时保存,以防网站出现问题。我不是回购协议的作者,但我非常感谢为此付出的努力。请查看https://asset-packagist.org/site/about以了解更多有关该项目的信息。


如果您在使用 composer 时遇到困难,这里有一些有用的命令:

composer clear-cache - 清除 composer 相关的缓存

composer install -vvv - 添加参数“vvv”显示安装过程相关输出(对调试有用)

composer global show - 检查您是否已经安装了 fxp/composer-asset-plugin。就我而言,它已经是,但是它没有被检测为依赖项,并且我之前描述的解决方案对我来说完美无缺 - 希望它也对你有用!

【讨论】:

以上是关于Composer 抛出 [ReflectionException] Class Fxp\Composer\AssetPlugin\Repository\NpmRepository 不存在的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 3 包创建总是抛出“编辑 composer.json 文件”

composer install --prefer-source 抛出错误

使用 composer 克隆 Sylius

Windows PATH 变量不适用于 Composer

Composer-> 不包含有效的 JSON

thinkphp图片压缩-composer-Intervention-Image-ImageManagerStatic