Laravel PackageManifest.php 第 131 行:未定义索引:名称

Ala*_*cha 23 php laravel composer-php

我用这个命令更新了作曲家:

composer self-update
Run Code Online (Sandbox Code Playgroud)

它已更新到版本 2.0.4。然后当我尝试使用以下命令启动我的 Laravel 项目时:

php artisan serve
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

In PackageManifest.php line 131:

 Undefined index: name
Run Code Online (Sandbox Code Playgroud)

我试着用这个回到旧版本的作曲家:

composer self-update --rollback
Run Code Online (Sandbox Code Playgroud)

作曲家降级到 1.9.3 版,但对错误没有帮助。然后我用这个命令再次更新作曲家:

composer self-update --stable
Run Code Online (Sandbox Code Playgroud)

并且仍然得到同样的错误。

这是 PackageManifest.php 文件的第 131 行:

return [$this->format($package['name']) => $package['extra']['laravel'] ?? []];
Run Code Online (Sandbox Code Playgroud)

Thâ*_*ình 56

首先,您应该在使用后再次检查版本composer self-update。然后,你试试composer update。最后,您运行php artisan serve.


cen*_*com 16

问题是 Laravel 默认供应商包之一有一个小错误。

解决此问题的解决方案如下:

rm -rf composer.lock
rm -rf vendor
composer install
Run Code Online (Sandbox Code Playgroud)

这会将 Composer 包更新到您当前版本的 laravel 的最新版本,这应该可以解决问题。


Sol*_*try 8

在 Illuminate\Foundation\PackageManifest.php 中第 129 行添加代码:

    ...
    $ignoreAll = in_array('*', $ignore = $this->packagesToIgnore());
    // ------------------:::::::::FIX::::::::::------------
    if (isset($packages['packages'])){
        $packages = $packages['packages'];
    }
    // ---------------------------ENDFIX-------------------
    $this->write(collect($packages)->mapWithKeys(function ($package) {
    ...
Run Code Online (Sandbox Code Playgroud)

  • 当然。但有时我们需要忽略规则,因为生活比规则更复杂。这是其中之一。此修复使 Composer 也可以更新 saintvendor 文件夹。您可以比这更好地发布您的决定。 (2认同)

Set*_*thu 5

这实际上已经在 Laravel 中修复了,所以请确保您将 Laravel 更新到至少 6.18.7+ 或 7.6.0+ 或 8.0+

仅供参考,如果您删除 composer 本地文件,它将更新您的所有依赖项,因此这不是一个好主意。

通过运行该命令composer update laravel/framework应该有望解决问题,而不会导致任何其他问题。如果您无法更新 Laravel,那么您最好使用composer self-update --1.

如果您使用的是illuminate/foundation代替laravel/framework,那么请确保您使用的是composer update illuminate/foundation代替。


小智 5

选项1:

打开vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php

然后搜索代码:

$packages = json_decode($this->files->get($path), true);
Run Code Online (Sandbox Code Playgroud)

插入

$packages = $installed['packages'] ?? $installed;
Run Code Online (Sandbox Code Playgroud)

选项 2:

运行命令

composer update
Run Code Online (Sandbox Code Playgroud)