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"
}
}
}
約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 global require fxp/composer-asset-plugin --no-plugins
.composer
ディレクトリからfxp
ディレクトリを削除することで、問題を解決しました。私の設定では、これはトリックを行います:
rm -rf ~/.composer/vendor/fxp
何かが必要になったとき、更新されたプラグインを再ダウンロードするだけです。
次を実行して、グローバル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#を参照してください最小安定性 詳細については。
さらに一般的な問題については、 https://getcomposer.org/doc/articles/troubleshooting.md をお読みください。
私の場合、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
を置き換えるか、削除する必要があります。
他に解決策がない場合は、代替手段として AssetPackagist を試してください。
packagesbower-asset/bootstrapおよびnpm-asset /を追加します次のようなcomposer.jsonへのjquery:
"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',
],
];
これらの指示は、時間の経過とともに変更される場合があります。それらはリポジトリWebサイトからコピーされているため、Webサイトで何かが発生した場合に備えて時間内に継続できます。私はレポの作成者ではありませんが、それに対する努力に本当に感謝しています。 https://asset-packagist.org/site/about をチェックして、プロジェクトの詳細を確認してください。
作曲家と格闘している場合、ここにいくつかの便利なコマンドがあります:
composer clear-cache
-composer関連キャッシュをクリア
composer install -vvv
-「vvv」パラメーターを追加して、インストールプロセスに関連する出力を表示します(デバッグに役立ちます)
composer global show
-fxp/composer-asset-pluginが既にインストールされているかどうかを確認するのに役立ちます。私の場合、すでに依存関係として検出されていませんでしたが、先ほど説明した解決策は問題なく機能していました。