Voyager:“@php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 1”

Posted

技术标签:

【中文标题】Voyager:“@php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 1”【英文标题】:Voyager: "@php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1" 【发布时间】:2020-11-19 14:53:35 【问题描述】:

一直在其他项目中使用 tcg/voyager 包,到现在为止我没有遇到任何问题。

尝试在新项目中安装它会抛出这个错误

Call to undefined method Illuminate\Auth\DatabaseUserProvider::getModel()

  at C:\xampp\htdocs\laravel\Veachy backs\Veachy (voyager admin)\vendor\tcg\voyager\src\VoyagerServiceProvider.php:101
     97|      */
     98|     public function boot(Router $router, Dispatcher $event)
     99|     
    100|         if (config('voyager.user.add_default_role_on_register')) 
  > 101|             $model = Auth::guard(app('VoyagerGuard'))->getProvider()->getModel();
    102|             call_user_func($model.'::created', function ($user) use ($model) 
    103|                 if (is_null($user->role_id)) 
    104|                     call_user_func($model.'::findOrFail', $user->id)
    105|                         ->setRole(config('voyager.user.default_role'))

  1   C:\xampp\htdocs\laravel\Veachy backs\Veachy (voyager admin)\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:37
      TCG\Voyager\VoyagerServiceProvider::boot(Object(Illuminate\Routing\Router), Object(Illuminate\Events\Dispatcher))

  2   C:\xampp\htdocs\laravel\Veachy backs\Veachy (voyager admin)\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:37
      call_user_func_array()
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

此错误将在任何下一个 php artisan 命令中出现,直到我删除包。

在出现此错误之前,我需要将作曲家内存从 512M 更新到 2G。不知道有没有关系。

在安装包之前已经更新了composer。

版本信息 Laravel:v 7.22.4 PHP:7.3.12

谢谢大家,

费尔南多

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,因为我的项目使用 'api' 作为默认保护而不是 “网络”(配置\auth.php):

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],

解决方法是将“app\Providers\AppServiceProvider.php”中的“VoyageGuard”设置为您选择的防护(网络):

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    
        $this->app->singleton('VoyagerGuard', function () 
            return 'web';
        );
    

现在 Voyager 将使用 web 防护而不是 api 防护。

最好的问候

【讨论】:

以上是关于Voyager:“@php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 1”的主要内容,如果未能解决你的问题,请参考以下文章

voyager的安装于使用入门

为Laravel Voyager创建数据导入页面

一款你不容错过的Laravel后台管理扩展包 —— Voyager

如何在 laravel voyager 中上传大文件?

Voyager下的Settings方法

添加字段以在 voyager 中编辑用户