通过 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的主要内容,如果未能解决你的问题,请参考以下文章