Class 'Laravel\Passport\Passport' 未在 Laravel 5.7 上找到

Class 'Laravel\Passport\Passport' not found on Laravel 5.7

我只是 cloned 一个 repo 和一个 Laravel 5.7 project,我在我的机器上 运行 它遇到了一些麻烦。

当我制作 composer install 时,我得到这个 error:

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover

In AuthServiceProvider.php line 35:

  Class 'Laravel\Passport\Passport' not found


Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

我该怎么做才能解决这个错误?我不知道从哪里开始。

这是项目的composer.json file:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": "^7.1.3",
        "designmynight/laravel-mongodb-passport": "^1.1",
        "fideloper/proxy": "^4.0",
        "guzzlehttp/guzzle": "^6.3",
        "jenssegers/mongodb": "^3.4",
        "laravel/framework": "5.7.*",
        "laravel/passport": "^7.0",
        "laravel/tinker": "^1.0"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^2.0",
        "phpunit/phpunit": "^7.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\Foundation\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

看来你需要做

composer update 

而不是安装?

虽然 composer update 根据情况做了一些技巧,但它可能不是最好的解决方案。

首先 - 当 运行ning composer install 软件包根据 composer.lock 中的版本安装时,如果它包含在存储库中(应该是)。

在您的情况下,当您仔细查看控制台输出时,您有:

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.

所以很可能有人将 Laravel Passport 包添加到 composer.json 但没有 运行 composer install 或者忘记提交更新的 composer.lock 文件.

现在记得 运行ning composer update 你更新了所有的包。有时它很好(仅在本地主机上)但有时它不是因为你并不总是想要更新所有包。因此,当您需要更新单个包时,您也可以在这种情况下尝试 composer update laravel/passport 只是强制 updating/installing 只是 Laravel Passport,而不触及其他包。