常见问题
作者:唐亚峰 | battcn
字数统计:820 字
环境配置
Nacos 连接失败
现象:Connection refused 或 NacosException
解决:
- 确保 Nacos 已启动,访问
http://localhost:8848/nacos能打开控制台 - 检查防火墙,需开放
8848(HTTP)和9848(gRPC)端口 - 使用 Nginx 代理时必须用 TCP 转发,不能用 HTTP2
无数据源异常
现象:启动报 No DataSource found
解决:
- 登录 Nacos 控制台
- 创建命名空间
v4-dev(或修改application.yml的 namespace) - 导入项目
附件/nacos/下的配置 ZIP 包
MINIO 文件上传报错
现象:XmlParserException: 前言中不允许有内容
解决:检查 MINIO 端口配置,API 端口默认 9000,控制台端口 9001,不要混淆
Redis 连接失败
现象:Cannot get Jedis connection
解决:
- 检查 Redis 服务是否启动
- 检查 Nacos 中的
redis.properties配置 - 确认 Redis 密码是否正确
后端开发
如何获取当前登录用户信息
java
@RequiredArgsConstructor
public class DemoService {
private final AuthenticationContext context;
public void demo() {
Long userId = context.getUserId();
Long tenantId = context.getTenantId();
String username = context.getUsername();
}
}接口 401 未授权
排查步骤:
- Token 是否过期 → 重新登录
- 接口是否需要权限 → 检查
@PreAuthorize或菜单权限配置 - 网关是否正确转发 → 检查网关路由配置
新增服务如何注册到网关
- 服务添加
spring-cloud-starter-alibaba-nacos-discovery依赖 - 配置
spring.cloud.nacos.discovery.namespace与其他服务一致 - 网关
routes中添加路由规则
MyBatis-Plus 分页不生效
解决:确保配置了分页插件
java
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}动态数据源切换
java
@DS("slave")
public List<User> queryFromSlave() {
return userMapper.selectList(null);
}前端开发
前端启动报依赖错误
现象:pnpm install 或 pnpm dev 报错
解决:
bash
# 确保 Node >= 20,pnpm >= 9
node -v && pnpm -v
# 清理后重装
rm -rf node_modules pnpm-lock.yaml
pnpm install登录后一直跳转登录页
解决:
- 检查后端 IAM 服务是否启动
- 检查 Redis 是否正常运行
- 清除浏览器缓存和 LocalStorage
页面菜单不显示
排查:
- 检查用户是否分配了角色
- 检查角色是否分配了菜单权限
- 清除浏览器缓存后重新登录
接口请求 404
排查:
- 检查
.env中的VITE_GLOB_API_URL配置 - 检查网关是否正常运行
- 检查接口路径是否正确
数据库
数据库连接失败
现象:Communications link failure 或 Access denied
解决:
- 检查 MySQL 服务是否启动
- 检查 Nacos 中的数据库配置(用户名、密码、端口)
- 确认 MySQL 允许远程连接
慢 SQL 排查
sql
-- 开启慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;多租户
租户数据看不到
现象:切换租户后查询不到数据
解决:
- 确认数据的
tenant_id字段值正确 - 检查当前登录用户是否属于该租户
- 超级管理员账号可能不受租户限制
多租户数据隔离失效
排查:
- 检查表是否有
tenant_id字段 - 检查实体类是否继承
TenantEntity - 检查是否使用
@IgnoreTenant注解跳过了租户过滤
某些表不需要租户隔离
使用 @IgnoreTenant 注解:
java
@IgnoreTenant
public List<Dict> queryAllDict() {
return dictMapper.selectList(null);
}获取帮助
如果以上文档无法解决您的问题:
