运行 php artisan 后找不到类“PackageVersions\Versions”

Gha*_*thi 3 php laravel composer-php

我正在使用 MacO。并有一个 Laravel 项目。跑步composer update产生

 Class 'PackageVersions\Versions' not found
Run Code Online (Sandbox Code Playgroud)

运行composer install同样的事情。即使php artisan没有任何其他东西也会产生相同的结果。唯一没有产生错误的是composer update --no-scripts

我的php版本是7.4,Laravel版本是5.8。Composer版本是2.3.2

这是更多来自错误产生之前的日志composer update

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

In base.php line 145:
                                              
  Class 'PackageVersions\Versions' not found  
                                              

Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
Run Code Online (Sandbox Code Playgroud)

这是我的作曲家包的列表,需要参数

"require": {
    "php": "^7.1.3",
    "doctrine/dbal": "^2.9",
    "eduardokum/laravel-mail-auto-embed": "^1.0",
    "fideloper/proxy": "^4.0",
    "guzzlehttp/guzzle": "^6.3",
    "laravel/framework": "5.8.*",
    "laravel/tinker": "^1.0"
},
Run Code Online (Sandbox Code Playgroud)

Joe*_*lon 6

PackageVersions\Versions已被弃用,至少根据Composer 的临时包来看是这样。

没有为您安装依赖项的具体原因不是特别容易解释,甚至也不是很容易理解,但很可能您的某个包存在依赖项问题。您可能正在更新软件包,并且依赖项已随新版本而更改。不过,为了简洁起见,我将重点关注解决方案。

Composer 现在附带Composer\InstalledVersions提供与已弃用的软件包相同的功能。

尽管它没有被列为您的软件包之一,但我会根据错误所在的文件及其所在行来猜测您正在使用 Backpack for Laravel。无论如何,解决方案只是将错误中指出的文件替换\PackageVersions\Versions为。对于背包来说是.\Composer\InstalledVersionsbase.phpconfig/backpack/base.php

前:

[
//...
    'cachebusting_string' => \PackageVersions\Versions::getVersion('backpack/crud'),
//...
]
Run Code Online (Sandbox Code Playgroud)

后:

[
//...
    'cachebusting_string' => \Composer\InstalledVersions::getVersion('backpack/crud'),
//...
]
Run Code Online (Sandbox Code Playgroud)

注意:Composer\InstalledVersions只要您使用 Composer 自动加载器(99.999% 的 Composer 用户都是如此),默认情况下就可用。了解更多:https ://getcomposer.org/doc/07-runtime.md#installed-versions