从路由调用passport:client,“在“ passport”命名空间中没有定义任何命令”

时间:2018-08-22 15:19:11

标签: laravel laravel-5 laravel-5.6 laravel-passport

我遇到一个问题,当我调用passportpassport:client命名空间不可用。我安装了Laravel passport according to the documentation,并安装了一个版本为5.6.34的全新Laravel项目。我还检查了similar question,并成功执行了所有步骤。

从命令行调用php artisan passport:client --password --name="Test"可以正常工作,并且我可以在数据库中看到客户端。

但是,如果我像这样在routes/web.php中创建一条路线,

<?php
use Illuminate\Support\Facades\Route;
use \Illuminate\Support\Facades\Artisan;

Route::get('/', function () {
    Artisan::call('passport:client', [
        '--password' => true,
        '--name' => "Test client",
        '--quiet' => true,
    ]);
});

并使用Artisan门面调用当我导航到http://homestead.test/时出现以下错误的命令。

Symfony \ Component \ Console \ Exception \ CommandNotFoundException The command "passport:client" does not exist.

我在Laravel\Passport\PassportServiceProvider::class的provider数组中添加了config/app.php

如何从网络路由调用passport:client命令?

我们有一个Laravel应用程序,它具有数百个动态处理的数据库连接。在管理界面中,您可以创建一个新项目,从而创建一个我们需要在其中生成客户端的新数据库。

我的另一个选择是实例化ClientRepository并调用createPasswordGrantClient()方法,但我想尽可能避免这种情况。我很好奇,为什么在CLI上调用而不是通过请求时,为什么命名空间可用。我可以通过请求调用其他命令,例如migrate:fresh,但是passport:client会失败,即使它是迁移的一部分或在另一个命令中。

1 个答案:

答案 0 :(得分:0)

根据this link,我运行了以下命令。

composer update

php artisan config:cache
php artisan migrate
php artisan passport:install

这对我有帮助。