Composer throws [ReflectionException]类Fxp\Composer\AssetPlugin\Repository\NpmRepository不存在

Mar*_*lić 80 php composer-php yii2

我安装了最新版本(1.0.0.稳定版)的作曲家,在我的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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fed*_*kun 181

大约九天前(2016年3月底左右),Composer\Repository\ComposerRepository::whatProvidesapi改变了.(#2668)因此,如果您已fxp/composer-asset-plugin全局安装,则应更新它.你可以这样做:

php composer.phar global update fxp/composer-asset-plugin --no-plugins
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这个命令以相同的错误结束.通过删除`〜/ .composer`目录并重新安装`fxp/composer-asset-plugin`来解决. (4认同)
  • 感谢您的反馈,我在答案中添加了`--no-plugins`选项. (4认同)
  • 没有帮助.第二次通话后,我得到"无需安装或更新".然后更新将再次创建相同的错误.还有什么想法? (2认同)

Jav*_*dov 62

如果更新不起作用,请尝试此操作.

composer global require fxp/composer-asset-plugin --no-plugins
Run Code Online (Sandbox Code Playgroud)

  • 那个人把它固定在我身边,非常感谢! (2认同)

Ale*_*ara 22

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

rm -rf ~/.composer/vendor/fxp
Run Code Online (Sandbox Code Playgroud)

现在当需要它时,它可以重新下载更新的插件.

  • 对于使用 Windows 的用户:C:\Users\<UserId>\AppData\Roaming\Composer\vendor (2认同)

Moh*_*ima 6

尝试composer.json通过运行来编辑您的全局:

vi ~/.composer/composer.json 然后确保你有这一行:

{
    "require": {
        "fxp/composer-asset-plugin": "1.1.*"
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的答案对我不起作用,因为我的版本fxp/composer-asset-plugin就像是1.1-beta04,当我将其更改为"1.1.8"并运行更新命令时:

php /usr/bin/composer global update fxp/composer-asset-plugin --no-plugins
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题.但没有编辑我的全局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 for更多细节.

阅读https://getcomposer.org/doc/articles/troubleshooting.md以了解更多常见问题.