通过 composer 创建新的 laravel 项目失败,错误类 ArrayLoader not found

Posted

技术标签:

【中文标题】通过 composer 创建新的 laravel 项目失败,错误类 ArrayLoader not found【英文标题】:Creating new laravel project via composer fails with error class ArrayLoader not found 【发布时间】:2021-11-20 08:34:16 【问题描述】:

当我为 laravel 创建一个新的作曲家项目时

composer create-project laravel/laravel laravel

我收到以下错误

> @php artisan package:discover --ansi

   Error

  Class 'Symfony\Component\Translation\Loader\ArrayLoader' not found

  at vendor/nesbot/carbon/src/Carbon/Translator.php:80
     76▕     public function __construct($locale, Translation\Formatter\MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
     77▕     
     78▕         $this->initializing = true;
     79▕         $this->directories = [__DIR__.'/Lang'];
  ➜  80▕         $this->addLoader('array', new Translation\Loader\ArrayLoader());
     81▕         parent::__construct($locale, $formatter, $cacheDir, $debug);
     82▕         $this->initializing = false;
     83▕     
     84▕

      +13 vendor frames
  14  [internal]:0
      Illuminate\Foundation\Application::Illuminate\Foundation\closure()

      +5 vendor frames
  20  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

我使用最新的稳定作曲家 (2.1.8) 在 PHP 7.4.24 docker 容器 (macOS) 中运行它。

完整日志https://pastebin.pl/view/bb4ae413

【问题讨论】:

这能回答你的问题吗? Corrupted composer.json file in Laravel 8 这是最近几个小时内修复的错误。您可以尝试再次运行您的命令吗? 【参考方案1】:

4.3.8 版的 Symfony 组件中似乎存在错误或不兼容问题。

只需将此添加到您的composer.json

 "conflict": 
        "symfony/symfony": "*",
        "symfony/translation": "v5.3.8",
        "symfony/messenger": "v5.3.8",
        "symfony/mailer": "v5.3.8",
        "symfony/notifier": "v5.3.8"
    ,

运行composer update 将安装旧版本。当 5.3.9 发布时,新的将自动安装,无需更改任何内容。

核心团队is aware of this issue,很快就会发布修复。

【讨论】:

【参考方案2】:

似乎很多人都有同样的问题

暂时手动降级到 symfony/translate 5.3.7 或更低版本

【讨论】:

【参考方案3】:

如果您在 composer.json 文件中有 symphony,则可以降级版本。 如果不只是添加 “Symfony/翻译”:“4.3.8”

"require": 
     ...
     "symfony/translation": "4.3.8",
    

然后 composer update

版本可能不同,请记住这一点。

【讨论】:

以上是关于通过 composer 创建新的 laravel 项目失败,错误类 ArrayLoader not found的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP:作曲家返回错误而不是创建新的laravel项目

无法创建新的 Laravel 项目

如何通过Composer安装Laravel

Composer 在安装新的 laravel 库时遇到问题

新的 laravel/homestead 配置中的 GitHub OAuth 令牌的 Composer 错误

创建一个 Laravel 项目