主题
CatchAdmin 常见问题
使用 CatchAdmin 过程中的常见问题和解决方案
依赖问题
由于 Laravel12
刚发布,CatchAdmin 的依赖可能无法正常安装。这通常是由于镜像更新慢导致的,建议取消使用镜像,直接从官方源下载。如果网络条件不佳,可以使用'魔法'工具(懂得吧)来提升下载速度。
镜像
这是目前维护中的可用的 composer 镜像,使用下面的命令安装
shell
composer config -g repos.packagist composer https://packagist.pages.dev
路由未找到
遇到 CatchAdmin 路由访问问题时,首先检查路由是否存在:
bash
php artisan route:list
如果接口路由不在路由表中,通常是因为相关模块未启用。请检查 storage/app/modules.json
文件中的模块状态,以权限模块为例:
json
{
"title": "权限管理",
"name": "permissions",
"path": "permissions",
"keywords": "权限, 角色, 部门",
"description": "权限管理模块",
"provider": "\\Modules\\Permissions\\Providers\\PermissionsServiceProvider",
"version": "1.0.0",
"enable": true // 该字段是否开启
}
模块路由命名重复
在 CatchAdmin 开发中,当多个模块存在同名控制器时可能出现路由冲突。例如 CMS 模块和 SHOP 模块都有名为 CategoryController
的控制器。正常情况下,通过路由分组就能解决:
php
// cms 分类路由
Route::prefix('cms')->group(function () {
Route::apiResource('category', CategoryController::class);
});
// shop 分类路由
Route::prefix('shop')->group(function () {
Route::apiResource('category', CategoryController::class);
});
但是这里会出现一个问题,当使用
sh
php artisan route:cache
的时候,会提示一个错误
shell
Unable to prepare route [api/shop/category] for serialization. Another route has already been assigned name [category.index].
这个问题就是两个路由的 name
重复了, 无法进行缓存了。这里就需要设置成这样,只改 shop 的路由即可
php
// shop 分类路由
Route::prefix('shop')->group(function () {
Route::apiResource('category', CategoryController::class)->names('shop_category')
});
打包出现报错
在构建 CatchAdmin 前端项目时,如果出现过多的 TypeScript 类型错误,但你对类型检查不太敏感,这些错误通常不会影响应用正常运行。
快速解决方法是修改 package.json
文件中的 build 命令,跳过类型检查:
json
{
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build",
"build": "vite build",
"preview": "vite preview"
}
}