Класс 'Laravel \ Passport \ Passport' не найден на Laravel 5.7 - PullRequest
0 голосов
/ 18 марта 2019

Я просто cloned a 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
}

Ответы [ 2 ]

3 голосов
/ 18 марта 2019

Хотя composer update добился цели в зависимости от ситуации, это может быть не лучшим решением.

Прежде всего - при запуске composer install пакеты устанавливаются на основе версий, которые находятся в composer.lock, если этовключается в репозиторий (так и должно быть).

И в вашем случае, когда вы внимательно смотрите на вывод консоли, у вас было:

Предупреждение: файл блокировки не обновлен допоследние изменения в composer.json.Возможно, вы получаете устаревшие зависимости.Запустите update, чтобы обновить их.

Так что вполне возможно, что кто-то добавил пакет Laravel Passport в composer.json, но не запустил composer install или забыл зафиксировать обновленный файл composer.lock.

Теперь помните, что при запуске composer update вы обновляете все пакеты.Иногда это нормально (только на локальном хосте), но иногда это не так, потому что не всегда вы хотите обновить все пакеты.Поэтому, когда вам нужно обновить один пакет, вы можете попробовать в этом случае также composer update laravel/passport, чтобы принудительно обновить / установить только Laravel Passport, не затрагивая другие пакеты.

2 голосов
/ 18 марта 2019

Похоже, вам нужно сделать

composer update 

вместо установки?

...