我安装了最新版本(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"
}
}
}
7 回答
大约九天前(2016年3月底左右),
Composer\Repository\ComposerRepository::whatProvides
api改变了 . (#2668)因此,如果您已全局安装fxp/composer-asset-plugin
,则应更新它 . 你可以这样做:如果更新不起作用,请尝试此操作 .
我最终通过从
.composer
目录中删除fxp
目录来解决问题 . 在我的设置上,这可以解决问题:现在当需要它时,它可以重新下载更新的插件 .
尝试通过运行来编辑全局
composer.json
:vi ~/.composer/composer.json
然后确保你有这一行:以上答案对我不起作用,因为我的
fxp/composer-asset-plugin
的版本就像1.1-beta04
,当我将其更改为"1.1.8"
并运行更新命令时:它解决了这个问题 . 但没有编辑我的全局
composer.json
,它给了我这个错误:在我的Yii2项目中
Yii2,在文件夹
vendor/fxp
中,您需要替换文件夹composer-asset-plugin
或将其删除 .如果其他解决方案都不适合您,请尝试AssetPackagist作为替代方案 .
运行
composer install
(或composer update
)考虑到 asset-packagist 将资产安装在不同的目录中,请将以下行添加到应用程序配置中(通常称为web.php):
这些说明可能会随时间而变化 . 它们已经从repo网站复制,因此它们可以及时使用,以防网站出现问题 . 我不是回购的作者,但我真的很感激所做的努力 . 请检查https://asset-packagist.org/site/about以了解有关该项目的更多信息 .
如果你正在努力学习作曲家,你可以在这里找到一些有用的命令:
composer clear-cache
- 清除与作曲家相关的缓存composer install -vvv
- 添加参数"vvv"以显示与安装过程相关的输出(对调试很有用)composer global show
- 用于检查是否已安装 fxp/composer-asset-plugin . 在我的情况下,它已经是,但它没有被检测为依赖,并且我之前描述的解决方案对我来说毫无瑕疵 - 希望它对你也有效!您可以通过在全局级别要求它来进行永久性修复,然后针对每个其他项目进行解决 . 但请确保您向所有团队成员提供建议 .
最好是在项目范围内添加它,并以这种方式解决所有人 .
所以:
composer require fxp/composer-asset-plugin