【问题标题】:Composer error: UnexpectedValueException作曲家错误:UnexpectedValueException
【发布时间】:2023-04-04 15:00:02
【问题描述】:

我的作曲家突然停止工作。我什至没有添加新包,只是想检查是否有任何更新:

PS C:\data\www\project.dev> composer self-update
You are already using composer version 1.3.2 (stable channel).

PS C:\data\www\project.dev> composer update
> php artisan clear-compiled
The compiled class file has been removed.
Loading composer repositories with package information
Updating dependencies (including require-dev)

  [UnexpectedValueException]
  Could not parse version constraint >=~2: Invalid version string "~2"


update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock]...

到目前为止我发现的所有解决方案都建议更新作曲家并检查composer.json,但那里不应该有任何问题:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.3.*",
        "edofre/laravel-fullcalendar-scheduler": "^1.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "5.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
        "post-update-cmd": [
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

如您所见,里面并没有什么特别之处。

PS:当然,我已经检查过thisthis,但这些都是不相关的问题。

【问题讨论】:

  • 您的 composer.lock 文件是否有可能包含 ~2.0 参考?
  • @JoelHinz 锁定文件应该在update 上被覆盖,不是吗?您的需求包是否有可能在其需求中包含~2
  • 没有锁文件,我已经删除了。但是一个包的依赖是可能的。不知道如何检查。
  • @Peh 啊,当然,我只看到了自我更新。我的错!希望你能找到错误,Dainis。
  • @DainisAbols 尝试用"require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~4.0", "symfony/css-selector": "3.1.*", "symfony/dom-crawler": "3.1.*" },替换你需要的开发部分

标签: php laravel laravel-5 composer-php


【解决方案1】:

编辑:

这个问题在 composer-asset-plugin 的 1.3.0@dev 版本中得到修复。

可以通过以下方式安装:

composer global require fxp/composer-asset-plugin:~1.3@dev

另请参阅:https://github.com/fxpio/composer-asset-plugin/issues/270


我已经使用 composer 的详细输出找到了您的问题。

问题最初是由要求引起的

"edofre/laravel-fullcalendar-scheduler": "^1.0"

其中需要一些凉亭包(为此,我假设您安装了Composer Asset Plugin - 至少我必须按照 laravel-fullcalendar-scheduler 的文档中所述执行此操作)

其中一个凉亭包例如:

 "bower-asset/fullcalendar-scheduler": "v1.4.0"

Bower fullcalender-schedulare 有一些依赖项(在 bower.json 中):

 "dependencies": {
    "jquery": "2 - 3",
    "moment": "^2.9.0",
    "fullcalendar": "~3.2.0"
},

使用的composer资产插件将jquery依赖翻译成:

">=~2,<4.0"

这最终会导致 composer 模块 https://github.com/composer/semver 中的错误,从而引发错误 composer/semver/src/VersionParser.php:485

为了进行测试,我已手动将版本更改为 >=2.0,该版本正在运行。

我目前尚未调查这是 composer/semver 库中的错误还是 composer 资产插件中的错误。

作曲家文档说 ~2 是一个有效的版本号,但我不知道它是否应该用于 ">~2" 之类的比较(在我看来,这根本没有意义...... )

【讨论】:

  • 这听起来很正确,但我在哪里可以找到(或创建)bower.json?我找不到像"jquery": "2 - 3", 这样的条目:/ PS:到目前为止我已经测试过,这只发生在我的Windows DEV 系统上。它在 Ubuntu 测试和生产服务器上运行良好。
猜你喜欢
  • 2016-02-28
  • 2018-05-08
  • 2019-09-28
  • 2021-08-07
  • 2014-06-16
  • 2013-06-01
  • 2015-07-10
  • 2013-09-07
相关资源
最近更新 更多