You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel自定义CRUD包报错:Target class [Eraufi\Src\GenerateCRUDCommand]不存在

Laravel CRUD包安装后dump-autoload报错:Target class [Eraufi\Src\GenerateCRUDCommand]不存在

我开发了一款Laravel CRUD生成包并发布到Packagist,通过composer require eraufi/crud安装后,执行composer dump-autoload时出现错误:Target class [Eraufi\Src\GenerateCRUDCommand] does not exist。相关代码文件如下:

项目app\Console\Kernel.php代码:

namespace App\Console;

use Eraufi\Src\GenerateCRUDCommand;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{    
    protected $commands = [
        GenerateCRUDCommand::class,
    ];
}

包内vendor\eraufi\crud\composer.json代码:

{
    "name": "eraufi/crud",
    "description": "A package for generating CRUD operations in Laravel",
    "version": "0.0.1",
    "authors": [
        {
            "name": "Mohufi",
            "email": "ed@gg.com"
        }
    ],
    "require": {
        "php": "^8.1",
        "laravel/framework": "^10.10"
    },
    "autoload": {
        "psr-4": {
            "eraufi\\crud\\": "src/"
        }
    }
}

包内vendor\eraufi\crud\src\GenerateCRUDCommand.php代码:

<?php

namespace Eraufi\Crud;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log;

class GenerateCRUDCommand extends Command
{
    protected $signature = 'crud:generate {model}';

    protected $description = 'Generate CRUD operations for a model based on the database table';

    public function handle()
    {
        $model = $this->argument('model');
        $tableName = Str::snake($model);
        $question = [
            'generateView' => $this->confirm('Generate Views?'),
            'isEducationl' => $this->confirm('Are you Using this for Educational Purposes? (Adds Comments)'),
        ];
        $columns = Schema::getColumnListing($tableName);

        $this->requestCodes($model, $columns, $question);
        $this->controllerCodes($model, $columns, $question);

        $this->routeCodes($model, $question);
        if ($question['generateView']) {
            $this->indexViewCodes($model, $columns);
            $this->createViewCodes($model);
            $this->createEditCodes($model);
            $this->createShowCodes($model);
        }
    }
}

错误原因及修复步骤

1. 命名空间与PSR-4映射完全不匹配

包的composer.json中PSR-4配置为小写的eraufi\\crud\\,但命令类使用的是大写开头的Eraufi\Crud命名空间,同时项目Kernel.php错误引入了不存在的Eraufi\Src\GenerateCRUDCommand路径,三者完全错位。

修复操作:

  • 修改包内composer.json的PSR-4映射,保持命名空间大小写一致:
"autoload": {
    "psr-4": {
        "Eraufi\\Crud\\": "src/"
    }
}
  • 修改项目app\Console\Kernel.php中的引入语句,匹配命令类的实际命名空间:
// 替换原错误引入
use Eraufi\Crud\GenerateCRUDCommand;

2. 更新自动加载规则并重新发布包

  • 在包的根目录执行以下命令,更新自动加载文件:
composer dump-autoload
  • 更新包的版本号(如改为0.0.2)后重新发布到Packagist,触发平台重新抓取包内容。
  • 在Laravel项目中更新包:
composer update eraufi/crud

3. 验证命令注册结果

执行以下命令查看命令列表,确认crud:generate是否存在:

php artisan list

内容的提问来源于stack exchange,提问作者ERaufi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:50:00