【问题标题】:Voyager: "@php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1"Voyager:“@php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 1”
【发布时间】:2023-03-16 15:00:01
【问题描述】:

一直在其他项目中使用 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

谢谢大家,

费尔南多

【问题讨论】:

    标签: php laravel voyager


    【解决方案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 防护。

    最好的问候

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 2019-03-29
      • 1970-01-01
      • 2019-05-28
      • 2020-04-24
      • 2020-05-27
      • 1970-01-01
      • 2021-08-07
      • 2021-12-22
      相关资源
      最近更新 更多