Skip to content

常见问题

温馨提示

以下常见问题仍无法解决你的疑惑,可尝试 进群 与群内各位大佬交流沟通。

其他

项目能商用吗?

项目协议是否可商用
ContiNew AdminApache-2.0 开源许可协议可开发商业应用
ContiNew StarterLGPL-3.0 开源许可协议通过 Maven/Gradle 等依赖方式开发商业应用

项目能二开开源吗?

非常欢迎在遵守对应项目开源协议的基础上进行二次开发开源,扩展生态系统,如方便欢迎在 生态系统 中登记,给有需要的人更多的选择。

项目有商业版吗?

暂无计划。为爱发电,支持赞助。

项目怎么升级到最新版本?🔥

Admin 项目分为两部分,一部分是写在 Starter 中的通用配置和组件能力,一部分是 Admin 本体中的通用业务代码。

Admin 本体项目是一个代码模板,直白点说就是作者帮你写了一个项目基础的部分代码,你下载后就可以基于现有的代码和规范继续开发你的业务了。

所以理论上 Admin 本体项目谈不上更新,因为你的业务和作者写的通用模板肯定不一样。

但如果你是发现了已有代码的 Bug,或者发现 Admin 更新中修复了某个 Bug,你可以打开对应提交记录,参照着修改对应部分的代码,这也算是一种升级。

如果是 Starter 部分的配置,因为作者已经将 Starter 发布到了 Maven 中央仓库,所以,你可以像升级其他外部依赖(Spring、Hutool 等)版本一样升级它。记得多参考 Admin 本体升级 Starter 版本时的提交记录。

单独开了一篇说明此事,详情请查看《框架更新》。

接不接定制开发?

作者仅在业余时间维护开源项目,有单独全职工作,不接定制开发。如有需要,可协助各位老板在交流群内发送广告。Coder help coder.

作者是全栈吗?

Creator 是 Java 后端开发,不擅长前端开发(欢迎有意的前端同学参与 PR 开发),所以很多时候,你会看到后端会相对频繁更新。但在提供解决方案时,会尽力通过迭代方式逐步完善前端细节,且拥有一双发现“美”的眼睛。

< v3.0.0 使用 Arco Design Vue UI 框架官方提供的前端模板(Arco Design Pro Vue)进行扩展开发。

>= v3.0.0 使用由 林大 开源的基于 Arco Design Vue UI 框架的前端模板(Gi Demo)进行扩展开发。

Creator 虽不擅长前端,但对前端开发仍坚持追寻 “持续迭代优化,持续提供开箱即用,舒适的开发体验。” 的 slogan,目前维护团队的前端主力为 秋大,且定期会同步 林大Gi Demo 更新。

ContiNew Admin

【综合】项目启动后,页面空白

Q: 前后端项目均启动成功,访问却是空白页面,打开浏览器控制台也没有报错信息。

A: 交流群内曾有且仅有一位童鞋遇到过此问题,请检查浏览器有没有启用 ublock oragin 扩展组件,如果有请调整规则或在本页面关闭。

【后端】项目更新后启动报错

Q: 后端项目之前启动没问题,更新(git pull)了最新内容之后,启动就报类似如下错误:

Unsatisfied dependency expressed through bean property 'sqlSessionTemplate': Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Validation Failed:
1 changesets check sum
db/changelog/xxx/continew-admin_xxx.sql::1::Charles7c was:
8:1181b1e4347607c6084736f1a9c27327 but is now: 8:382915a29ba9c391a43b7b346e5fb6b3
...

A: 首先必须承认及道歉,这是维护团队的 ,然后说解决方法。

解决方法: 打开你的数据库,找到 databasechangelog 表,删除它(这是最简单的)。然后如果你能查看下拉下来的提交有哪些表变更了,不妨手动更新下表结构,更甚者如果你还没太多重要数据,直接删除所有数据库表。操作完后,再启动项目就没事了。

下面再来简单解释下错误原因:

直接原因: 项目启动时,如果启用了 liquibase,则 liquibase 会在执行相关 SQL 脚本前进行一致性校验,如果检查到 已经执行过的 SQL 脚本内容与执行记录不一致,也就是发生了修改,就会报错。

根本原因: 正常来讲,已经执行过的 SQL 脚本不会再进行修改,真要进行修改也不是直接去改原来的那段脚本内容,而是应该进行追加变更记录。

例如:假设下方的 SQL 脚本内容是已经被 liquibase 执行过的,那如果后面随着需求调整 name 字段要调整为 dept_name,你不能直接去修改这段内容,而是应该向下追加变更记录。

sql
-- changeset Charles7c:1
CREATE TABLE IF NOT EXISTS `sys_dept` (
    `id`          bigint(20)   AUTO_INCREMENT              COMMENT 'ID',
    `name`        varchar(30)  NOT NULL                    COMMENT '部门名称',
    `parent_id`   bigint(20)   NOT NULL DEFAULT 0          COMMENT '上级部门ID',
    `ancestors`   varchar(512) NOT NULL DEFAULT ''         COMMENT '祖级列表',
    `description` varchar(200) DEFAULT NULL                COMMENT '描述',
    `sort`        int          NOT NULL DEFAULT 999        COMMENT '部门排序',
    `status`      tinyint(1)   UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
    `is_system`   bit(1)       NOT NULL DEFAULT b'0'       COMMENT '是否为系统内置数据',
    `create_user` bigint(20)   NOT NULL                    COMMENT '创建人',
    `create_time` datetime     NOT NULL                    COMMENT '创建时间',
    `update_user` bigint(20)   DEFAULT NULL                COMMENT '修改人',
    `update_time` datetime     DEFAULT NULL                COMMENT '修改时间',
    PRIMARY KEY (`id`) USING BTREE,
    UNIQUE INDEX `uk_name_parent_id`(`name`, `parent_id`) USING BTREE,
    INDEX `idx_parent_id`(`parent_id`) USING BTREE,
    INDEX `idx_create_user`(`create_user`) USING BTREE,
    INDEX `idx_update_user`(`update_user`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';

根据本项目的划分,表结构列的变更应该在对应版本的 xxx_column 文件中追加 -- changeset,如下所示:

sql
-- changeset Charles7c:1
ALTER TABLE `sys_dept` CHANGE `name` `dept_name` varchar(30) NOT NULL COMMENT '部门名称';

追加完后,在下次启动项目的时候 liquibase 检测到这个变更就会自动执行,也就完成了修改。

再次致歉

不过维护团队没有按规范实施,当然不是觉得因为使用人数少,所以肆无忌惮地做变更。😅

liquibase 是用于管理数据库版本,跟踪、管理和应用数据库变化的工具,建议学习了解一下。

【后端】启动后,访问项目 URL 提示跨域错误

在开发环境(dev)的跨域配置中,后端项目配置为了 *,表示放行所有域名。而在生产环境(prod)的跨域配置中,后端项目则配置为了项目前端 URL,所以如果你遇到跨域问题,可以首先确认下后端项目的跨域配置是否正确。

在确认没有问题的情况下,再确认下自己本地是不是开启了 V*N 等代*软件,尝试关闭后再试试。

【后端】启动后,CosID 报错误

machineId can't be greater than maxMachine[xx] or less than 0.

将 CosID 的 machine-bit 位数参数调大一些。

【前端】项目安装依赖提示证书过期

Q: pnpm install 报错,报错提示类似如下:

npm ERR! request to registry.npm.taobao.org failed, reason: certificate has expired

A: 早在 2021 年,淘宝就发文称,npm 淘宝镜像已经从 registry.npm.taobao.org 切换到了 registry.npmmirror.com。旧域名也将于 2022 年 5 月 31 日停止服务(不过,直到近段时间 HTTPS 证书到期才真正不能用了)。

bash
# 清空缓存
npm cache clean --force

# 切换新源
npm config set registry https://registry.npmmirror.com

【前端】点击导出按钮报错 v2.5.0

Q: 点击导出按钮,报错提示如下:

Notification

由于部分模拟数据需要,前端默认启用了 Mock.js,而 Mock.js 会将 responseType 设置为 '',这不仅会导致关键判断出错,也会导致导出的文件无法打开,实际开发时自行关闭 Mock 即可。

A: 如报错提示所述,实际开发时,打开 continew-admin-ui/src/utils/setup-mock.ts,关闭 Mock 即可。

ts
export default ({ mock, setup }: { mock?: boolean; setup: () => void }) => {
  // 在生产环境也启用 mock
  if (mock !== false) setup(); 
  // if (mock !== false) setup();
};

如有需要,实际开发时,除关闭 Mock 外,同时修改 continew-admin-ui/src/components/crud/index.ts 中的导出错误提示。

【前端】添加完菜单后路由不可用 v2.5.0

Q: 添加完菜单后,点击菜单没有反应,打开控制台后有路由报错。

A: 目前前端项目的动态路由,是采用的基础脚手架 Arco Design Pro Vue 的设计方案 #147,作者称之为半动态路由,所以添加完菜单后,还需要在前端 router 下配置一个对应的静态路由(主要是为了指定其组件地址)。

补充问题

2024/2/22:群友 Joshua 使用时发现如果路由配置到 views/basic 目录,即以 /basic 为路由前缀,会出现配置失效的问题,初步怀疑是由关键词污染导致。

【前端】在目录下只添加了一个菜单,目录不显示

Q: 在目录下只添加了一个菜单,目录不显示。

A: 这是 GiDemo 中的一个小配置,如果目录下只有一个菜单,则不显示目录,而直接显示菜单。可通过还原此提交来恢复仅一个菜单的目录层级展示。目录下仅有一个菜单时平铺展示

相关处理代码可查阅:continew-admin-ui/src/layout/components/Menu/MenuItem.vue

【前端】配置好后端接口地址,接口 404

Q: 下载的 2.5.x 版本前端,配置好后端接口地址后,访问页面报接口 404。

A: 前后端版本一定要一 一对应,2.5.x 前端只支持后端 2.5.x 版本,友情建议前后端都升级到最新版本。

【前端】网络控制台里请求的不是后端,是前端地址

Q: 启动后,在浏览器的网络控制台里,请求的 URL 是前端的,而不是后端的。

A: 前端基础知识,请先了解下前端的请求过程,前端请求接口后会代理转发到后端的。详情请点击了解