【问题标题】:Composer Json Validation Error for regex pattern ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$正则表达式模式的 Composer Json 验证错误 ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{ 0,2})[a-z0-9]+)*$
【发布时间】:2020-11-23 03:55:58
【问题描述】:

所以我尝试将 composer 和 laravel 安装到 Phpstorm 中,但现在在 php.ini 中安装 composer.json 文件似乎有问题。 PHP 版本是 7.4.8。错误码如下图。

   "./composer.json" does not match the expected JSON schema:
    - name : Does not match the regex pattern ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$

我试图查找它以寻求帮助,但它并没有让我走得足够远,所以我想知道是否有人可以帮助我解决这个问题。

这就是我的 composer.json 的样子。

{
  "name": "vendor_name/PhpProjec",
  "description": "description",
  "minimum-stability": "stable",
  "license": "proprietary",
  "authors": [
    {
      "name": "***",
      "email": "email@example.com"
    }
  ],
  "require": {
    "barryvdh/laravel-ide-helper": "v2.7.0"
  }

【问题讨论】:

  • 你的包的实际名称是什么(我假设vendor_name/PhpProjec 只是有问题的占位符)?
  • 对不起,你说的包是什么意思? @rob006

标签: json composer-php


【解决方案1】:

问题出在 "name" 属性中

- name : Does not match the regex pattern ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$

相应地更改“名称”属性“供应商名称/项目名称”

例如:"name": "nismi/my-php-project"

【讨论】:

    【解决方案2】:

    您可能正在使用 Composer v2 吗?当我使用 Composer v1 在本地环境中使用给定的 JSON 时,它告诉我:

    弃用警告:您的软件包名称 vendor_name/PhpProjec 无效,不应包含大写字符。我们建议改用 vendor_name/php-projec。确保您修复此问题,因为 Composer 2.0 会出错。

    您提供的错误消息不会出现在我的系统上。如果您在使用其他包名后仍然遇到问题,请分享更多详细信息

    【讨论】:

    • 我目前正在使用 composer ver1.10.9。
    • 将我的项目更改为小写后它起作用了。谢谢
    【解决方案3】:

    composer 从 v1.9 开始区分大小写... 所以将“PhpProject”更改为“phpproject”

       {
      "name": "vendor_name/phpproject",
      "description": "description",
      "minimum-stability": "stable",
      "license": "proprietary",
      "authors": [
        {
          "name": "***",
          "email": "email@example.com"
        }
      ],
      "require": {
        "barryvdh/laravel-ide-helper": "v2.7.0"
      }
    

    【讨论】:

    • 在我的例子中,我将名称指定为"name": "projectname",而必须采用"name": "vendorname/projectname"的格式
    【解决方案4】:

    轻松修复转到composer.json 文件查找大写的位置,例如 Izupay/PayMent 到 izupay/payment,这将修复错误。

    {
      "name": "IzuPay/PayMent",
      "description": "description",
      "minimum-stability": "stable",
      "license": "proprietary",
      "authors": [
        {
          "name": "***",
          "email": "email@example.com"
        }
      ],
      "require": {
        "barryvdh/laravel-ide-helper": "v2.7.0"
      }
    

    有效的答案是:

    {
      "name": "izupay/payment",
      "description": "description",
      "minimum-stability": "stable",
      "license": "proprietary",
      "authors": [
        {
          "name": "***",
          "email": "email@example.com"
        }
      ],
      "require": {
        "barryvdh/laravel-ide-helper": "v2.7.0"
      }
    

    【讨论】:

      【解决方案5】:

      这很可能与您使用的 Composer 版本有关。

      在 Composer 2.0 版之前,名称可以包含任何字符,包括空格。

      但是,从 2.0 版本开始:

      • 名称可以由以 -, 分隔的单词组成。或_。
      • 完整名称应匹配 ^a-z0-9/a-z0-9$。
      • 名称必须是小写的(所以不是vendor_name/PhpProjec,而是vendor_name/phpprojec

      【讨论】:

        猜你喜欢
        • 2015-01-07
        • 2021-11-09
        • 2010-12-11
        • 2011-11-09
        • 2015-02-11
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多