Composer因"npm-signature"错误而无法更新

let*_*ump 6 npm composer-php yii2

在通过命令更新我的应用程序库时composer update,退出了

[InvalidArgumentException]                                                                                                          
Unknown downloader type: npm-signature. Available types: git, svn, fossil, hg, perforce, zip, rar, tar, gzip, xz, phar, file, path.  

Exception trace:
() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:128
Composer\Downloader\DownloadManager->getDownloader() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:152
Composer\Downloader\DownloadManager->getDownloaderForInstalledPackage() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:211
Composer\Downloader\DownloadManager->download() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:186
Composer\Installer\LibraryInstaller->installCode() at phar:///usr/local/bin/composer/src/Composer/Installer/LibraryInstaller.php:90
Composer\Installer\LibraryInstaller->install() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:173
Composer\Installer\InstallationManager->install() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:160
Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer/src/Composer/Installer.php:588
Composer\Installer->doInstall() at phar:///usr/local/bin/composer/src/Composer/Installer.php:227
Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/UpdateCommand.php:161
Composer\Command\UpdateCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:242
Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:842
Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:193
Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:251
Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:117
Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:100
Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:58
require() at /usr/local/bin/composer:24
Run Code Online (Sandbox Code Playgroud)

直到昨天,一切都在我当地的开发环境中按预期运行.

今天,在推送一些更新时,暂存和开发(与昨天的更新相比没有变化)退出上述错误.

这是我的composer.json档案:

{
"name": "name/project",
"description": "Project",
"keywords": ["tags..."],
"homepage": "http://web.myaddress.yes/",
"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": "~2.0.0",
    "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0",
    "dmstr/yii2-adminlte-asset": ">2",
    "kartik-v/yii2-widgets": "^3.4",
    "kartik-v/yii2-helpers": "^1.3",
    "kartik-v/yii2-widget-activeform": "^1.4",
    "kartik-v/yii2-datecontrol": "^1.9",
    "kartik-v/yii2-editable": "^1.7",
    "kartik-v/yii2-dropdown-x": "^1.2",
    "kartik-v/yii2-dialog": "^1.0",
    "kidzen/yii2-dynamicform": "^2",
    "kartik-v/yii2-tabs-x": "^1.2",
    "rmrevin/yii2-ionicon": "^1.2",
    "kartik-v/yii2-date-range": "^1.6",
    "kartik-v/php-date-formatter": "^1.3",
    "kartik-v/yii2-export": "^1.2",
    "webtoucher/yii2-js-cookie": "^1.0",
    "lajax/yii2-translate-manager": "~1.7",
    "mdmsoft/yii2-admin": "~2.0",
    "elvenpath/yii2-eu-vatvalidator": "^1.1",
    "kartik-v/yii2-widget-select2": "2.0",
    "kartik-v/yii2-slider": "^1",
    "edofre/yii2-fullcalendar-scheduler": "1.1.x-dev",
    "kartik-v/yii2-mpdf": "dev-master"
},
"require-dev": {
    "yiisoft/yii2-debug": "~2.0.0",
    "yiisoft/yii2-gii": "~2.0.0",
    "yiisoft/yii2-faker": "~2.0.0",
    "codeception/base": "^2.2.3",
    "codeception/verify": "~0.3.1"
},
"config": {
    "process-timeout": 1800
},
"repositories": [
    {
        "type": "composer",
        "url": "https://asset-packagist.org"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

这里有什么奇怪的东西,或者NPM服务器端有问题吗?

rob*_*006 7

更新

此错误已在的最新版本fxp/composer-asset-plugin修复,升级应解决此问题:

composer global require "fxp/composer-asset-plugin:^1.4.3"
Run Code Online (Sandbox Code Playgroud)

资产包装师也被固定了


这是fxpio/composer-asset-plugin 错误。好像npm distinfo中引入了一项新功能,这打破了将npm软件包转换为composer软件包的插件。因此,每个使用此新功能的软件包都将无法通过composer安装。

我不知道有任何简单的解决方法,您需要等到错误得到修复。但是,如果您迫不及待,可以尝试查找有问题的程序包,然后在中手动进行定义composer.json

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "npm-asset/moment",
            "version": "2.22.0",
            "dist": {
                "url": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz",
                "type": "tar"
            }
        }
    }
    ...
],
Run Code Online (Sandbox Code Playgroud)


小智 6

另一种解决方法是使用bower-asset /而不是npm-asset.

我能够将我的所有npm资产包转换为bower-asset,并且完美运行.

注意:确保版本号匹配.