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

如何在routes.php中调用handle方法修复Artisan命令注册报错

错误原因

Artisan::command() 方法用于快速注册闭包类型的Artisan命令,要求第二个参数必须传入闭包实例,你传入了数组格式的配置,不符合参数要求,因此触发类型错误。
且你已经创建了完整的命令类,类内部已通过$signature属性绑定了make:greetings命令标识,不需要在routes.php中重复注册。

修复方案

方案一(推荐,符合命令类开发规范)

  1. 直接删除routes.php中的错误代码:Artisan::command('make:greetings',[Hello::class,'handle'=>true]);
  2. 注册命令类:
    • Laravel 8及以上版本默认开启了app/Console/Commands目录下命令的自动加载,删除错误代码后即可直接使用命令
    • 低版本Laravel或者自定义框架配置场景,打开app/Console/Kernel.php,在$commands属性中添加你的命令类即可:
    protected $commands = [
        \App\Console\Commands\Hello::class,
    ];
    
  3. 运行命令php artisan make:greetings,即可在日志文件中看到写入的welcome message记录。

方案二(闭包命令实现,无需单独创建命令类)

如果不需要独立的命令类文件,可以直接用闭包方式注册命令,将routes.php中的代码替换为:

Artisan::command('make:greetings', function () {
    \Log::info("welcome message");
    $this->info("日志写入完成");
});

修改完成后直接运行命令即可生效。

优化建议

现有Hello类的handle方法返回了Log::info()的执行结果,不符合命令类返回整数状态码的规范,建议调整为:

public function handle()
{
    Log::info("welcome message");
    $this->info("问候日志已写入成功"); // 命令行输出执行提示
    return 0; // 0代表命令执行成功,非0代表执行失败
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:02