时间: 2025年06月18日 16:10:13 CST
任务: 修复 php artisan route:cache 报错问题
状态: ✅ 已完成
运行 php artisan route:cache 时出现路由名称冲突错误:
LogicException
Unable to prepare route [admin/openapi/stats] for serialization. Another route has already been assigned name [admin.openapi.stats.index].
通过代码检索发现有两个地方同时定义了相同的路由名称 admin.openapi.stats.index:
app/Module/OpenAPI/Routes/admin.php 第88-91行app/Module/OpenAPI/AdminControllers/StatController.php 第22-28行这导致了路由名称冲突,无法进行路由缓存。
修改 app/Module/OpenAPI/Routes/admin.php:
// 修改前
Route::resource('stats', StatController::class)->only(['index', 'show'])->names([
'index' => 'admin.openapi.stats.index',
'show' => 'admin.openapi.stats.show',
]);
// 修改后
// 统计分析管理 - 使用Resource注解自动注册,无需手动定义
发现 AdminServiceProvider 没有在 config/app.php 中注册,导致 admin.cache 服务无法解析。
在 config/app.php 中添加:
// Admin 模块
\App\Module\Admin\Providers\AdminServiceProvider::class,
AdminServiceProvider 中引用了不存在的命令类,暂时注释掉:
protected function registerCommands()
{
if ($this->app->runningInConsole()) {
// 暂时注释掉不存在的命令类
// $this->commands([
// \App\Module\Admin\Commands\AdminCacheCommand::class,
// \App\Module\Admin\Commands\AdminMaintenanceCommand::class,
// ]);
}
}
$ php artisan route:cache
INFO Routes cached successfully.
$ php artisan route:list --name=admin.openapi.stats
GET|HEAD admin/openapi-stats admin.openapi.stats.index
GET|HEAD admin/openapi-stats/{openapi_stat} admin.openapi.stats.show
GET|HEAD admin/openapi/stats/chart-data admin.openapi.stats.chart_data
GET|HEAD admin/openapi/stats/dashboard admin.openapi.stats.dashboard
GET|HEAD admin/openapi/stats/export admin.openapi.stats.export
POST admin/openapi/stats/generate admin.openapi.stats.generate
可以看到:
admin/openapi-stats (index/show)admin/openapi/stats/* (dashboard/export等)#[Resource] 注解自动注册标准CRUD路由ServiceProvider 必须在 config/app.php 中注册app/Module/OpenAPI/Routes/admin.php - 删除重复路由定义config/app.php - 注册AdminServiceProviderapp/Module/Admin/Providers/AdminServiceProvider.php - 注释不存在的命令类创建缺失的命令类:
App\Module\Admin\Commands\AdminCacheCommandApp\Module\Admin\Commands\AdminMaintenanceCommand建立路由注册规范文档,避免类似冲突
定期检查路由缓存,确保系统稳定性