当前位置: 首页 > news >正文

实现springBoot+vue系统项目时遇到的问题及解决方法

1、ideal导入项目后,侧边栏项目跑到了上方

将项目下的.idea文件删除,重新在ideal打开加载项目

2、导入项目后,项目依赖加载出错

File——Setting,找到Maven,更改为如下路径,重新加载maven

3、给项目和模块改名,发现新模块名后面跟着【旧模块名】(因为pom文件里的旧模块名没有改成新模块名)

File——Project Structure,更改project和modules名字

右键模块,更改模块目录名

回到项目所在文件夹,更改项目名字

ideal重新打开项目

如果是maven项目,需要把每个模块下的pom文件里面有关旧名字的依赖全部改掉,然后重新加载依赖

4、在vsCode导入vue项目时,下载依赖npm install 一直转圈

node版本太高,换成12.22.12版本

1、如果已安装node,打开控制面板卸载,然后为了确保彻底删除node在看看你的node安装目录中还有没有node文件夹,有的话一起删除。再看看C:\Users\用户名 文件夹下有没有.npmrc以及.yarnrc等等统统删除。再去看看你的环境变量有没有node相关的,有的话也一起删除了。

2、下载nvm(node版本控制)

nvm-setup.zip - 蓝奏云

下载后解压缩,运行exe后弹出安装窗口,自定义安装路径

在安装文件夹里打开cmd,输入nvm -v检测是否安装成功

nvm install 12.22.12  # 安装指定版本
nvm use 12.22.12      # 切换到该版本
nvm ls               # 查看已安装版本
nvm alias default 12.22.12  # 设置默认版本

重启电脑,在vscode打开项目重新运行

npm cache clean --force
Remove-Item -Recurse -Force node_modules; Remove-Item -Force package-lock.json
npm install
npm run serve

5、如何重命名vue项目

1、更改项目所在文件夹名字

2、删除项目的node_modules

3、更改项目中的package.json里的name字段为新项目名

4、重新加载项目依赖npm install

6、ideal全局搜索ctrl+shift+F失效

点击所使用的输入法的设置——查看输入法快捷键按钮设置——找到简体/繁体切换快捷键(可以发现这个快捷键是ctrl+shift+F)——取消快捷键或更改快捷键——进入ideal全局搜索ctrl+shift+F成功

7、启动启动类application时,报错java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'

File——Project Structure——project,将下面两项设置为同一版本,再运行启动类就可以了

8、数据库的create_time字段有数据,ideal里查询却为null

此时ideal的实体类属性名为create_time

springboot的配置文件开启了驼峰命名映射(数据库的字段总是命名为create_time,而ideal里的实体类属性命名总是createTime,采用驼峰命名映射可以自动将数据库的字段和实体类的属性对应上)

将实体类里的属性名create_at改为createAt对应上了驼峰命名映射后就能查出数据了

9、当前端的时间字段显示格式错误时

创建对象映射器

/*** 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象* 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]* 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]*/
public class JacksonObjectMapper extends ObjectMapper {public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";//public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";public JacksonObjectMapper() {super();//收到未知属性时不报异常this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);//反序列化时,属性不存在的兼容处理this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);//创建一个简单的模块,用于添加自定义的序列化器和反序列化器SimpleModule simpleModule = new SimpleModule().addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))).addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT))).addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT))).addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))).addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT))).addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));//注册功能模块 例如,可以添加自定义序列化器和反序列化器//将自定义的模块注册到 ObjectMapper 中,使其生效this.registerModule(simpleModule);}
}

在配置文件config创建 Spring MVC 框架消息转换器 

/*** 配置类,注册web层相关组件*/
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {/*** 扩展spring MVC框架的消息转化器(把后端传递给前端的数据按照同一格式转化)* @param converters*/protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器……");//创建一个消息转换器对象MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter();//需要为消息转换器设置一个对象转换器,对象转换器可以将java对象序列化为json数据converter.setObjectMapper(new JacksonObjectMapper());//将自己的消息转化器加入容器中,把自己的对象转化器优先级设置最高converters.add(0,converter);}
}

重新运行时间前端时间就正常了 

10、拷贝java文件进ideal后点击运行,报错找不到

点击ideal右侧的Maven,打开模块,点击编译,重启后可运行成功

11、阿里云oss试用三月,创建bucket的时候不让选择公共读

打开控制台(左上角悬浮搜索oss),进入对象存储oss控制台,点击数据服务,阻止公共访问,开关“阻止公共访问”一个来回,然后进入bucket空间,点击权限控制,关闭阻止公共访问,读写权限开启公共读

12、启动redis的客户端时Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。

在启动客户端redis-cli.exe之前先启动服务端redis-server.exe redis.windows.conf,启动服务端的命令行窗口不要关闭,重新开一个命令行窗口启动客户端

13、在ideal实用redis时候遇到了序列化与反序列化问题 nested exception is java.io.StreamCorruptedException: invalid stream header:xxx

在ideal中的redis配置类中添加,确保序列化和反序列话的序列化器一致

//StringRedisSerializer 用于将字符串类型的 key 进行序列化和反序列化,确保在 Redis 中存储的 key 是字符串类型
redisTemplate.setKeySerializer(new StringRedisSerializer());
// 设置value的序列化器为StringRedisSerializer,确保序列化和反序列化一致
redisTemplate.setValueSerializer(new StringRedisSerializer());

14、redis的配置类报错:Could not autowire. No beans of ‘RedisConnectionFactory‘ type found

把形参转化为属性用@Resurce注解注入,再把原来的形参去除就行了

@Configuration
@Slf4j
public class RedisConfiguration {@Resourceprivate RedisConnectionFactory connectionFactory;//RedisTemplate 是 Spring Data Redis 提供的一个核心类,用于简化与 Redis 数据库的交互操作@Beanpublic RedisTemplate redisTemplate(){log.info("开始创建Reids模板对象……");RedisTemplate redisTemplate=new RedisTemplate();//设置reids的连接工厂对象,创建与数据库的连接redisTemplate.setConnectionFactory(connectionFactory);//设置redis key的序列化器(将 Java 对象转换为字节数组,以便存储到 Redis 数据库中)//StringRedisSerializer 用于将字符串类型的 key 进行序列化和反序列化,确保在 Redis 中存储的 key 是字符串类型redisTemplate.setKeySerializer(new StringRedisSerializer());// 设置value的序列化器为StringRedisSerializer,确保序列化和反序列化一致redisTemplate.setValueSerializer(new StringRedisSerializer());return redisTemplate;}
}

15、解决github Push rejected报错 remote: error: GH013: Repository rule violations found for refs/heads/maste

在commit以后要push了发现不能push,后来才知道是因为push的内容有密钥access-key-secret这种隐私信息,所以才不能提交,因为已经commit了,所以要撤销commit,再commit一次(要注意不提交包含隐私信息的文件或者把该文件加入到.gitignore文件里)然后再push就可以了

16、微信开发者工具(微信小程序开发工具)写代码的时候没有组件提示补全也没有代码缩进(安装插件)

1、打开vscode安装插件

这个要安装2.2.2版本,2.3版本以上无法使用

2、然后打开微信开发者工具的拓展

点击

导入已安装的vscode拓展

wxml格式化功能:F1 或者 CMD + Shift + P 输入 format wxml 命令 或者右键菜单,也可以配置 wxmlConfig.onSaveFormat 开启保存后自动格式化

17、微信开发者工具获取微信用户昵称与头像没有弹窗

//获取微信用户的头像和昵称getUserInfo() {wx.getUserProfile({desc: "获取用户信息",success: (res) => {console.log(res.userInfo);//为数据赋值this.setData({nickName: res.userInfo.nickName,url: res.userInfo.avatarUrl,});},});

把调试基础库改为2.27.0以下的版本 

18、微信开发者工具向后端请求后回复 http://localhost:8080 不在以下 request 合法域名列表中

	sendRequest(){wx.request({url: 'http://localhost:8080/user/shop/status',method:'GET',success:(res)=>{console.log(res.data)this.setData({result:res.data})}})}

解决 

再次尝试,解决

19、使用jwt令牌的时候,jwt令牌解析不通过

在当前项目中分两个端user和admin,分别配置两个拦截器,对应的拦截器进行jwt解析的配置数据不一样 

# 设置jwt签名加密时使用的秘钥
admin-secret-key: cast
# 设置jwt过期时间
admin-ttl: 7200000
# 设置前端传递过来的令牌名称
admin-token-name: token
user-secret-key: heima
user-ttl: 7200000
user-token-name: authentication

在user端登录的时候,使用了user的配置数据进行生成jwt,而后面使用这个jwt送给admin拦截器使用admin的配置数据解析jwt,所以解析不出来。

解决方法:让user的配置数据进行生成jwt送给user拦截器解析

生成jwt令牌

Map<String,Object> claims=new HashMap<>();
claims.put(JwtClaimsConstant.USER_ID,user.getId());
String token= JwtUtil.createJWT(jwtProperties.getUserSecretKey(),jwtProperties.getUserTtl(),claims);

解析jwt令牌

log.info("jwt校验:{}", token);
Claims claims = JwtUtil.parseJWT(jwtProperties.getUserSecretKey(), token);

总结:生成jwt令牌的配置数据要和解析jwt令牌的配置数据一致。

相关文章:

  • 优艾智合机器人助力半导体智造,领跑国产化替代浪潮
  • 3335. 字符串转换后的长度 I
  • Codeforces Round 998 (Div. 3)
  • Generative Diffusion Prior for Unified Image Restoration and Enhancement论文阅读
  • 【图像处理基石】如何入门OCR技术?
  • 2025.05.11拼多多机考真题算法岗-第一题
  • 数学复习笔记 6
  • 目标检测任务 - 数据增强
  • 5月13日day24日打卡
  • 医疗设备EMC测试为什么推荐GRJ1080B系列滤波器?
  • IPD流程实战:产品开发各阶段目标、关注点和交付
  • 2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
  • 使用Kubernetes实现零停机部署
  • 内核链表中offsetof 和container_of的一些理解
  • Jackson 使用问题记录(持续更新)
  • 《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码
  • 数据结构(2)线性表-顺序表
  • 腾讯优化DeepSeek的DeepEP通信框架:开启AI大模型训练新时代
  • 运行Spark程序-在shell中运行 --SparkConf 和 SparkContext
  • 基于FPGA的视频接口之千兆网口(六GigE纯逻辑)
  • 2025财政观察|长三角“三公”经费普降,钱要用在刀刃上
  • 体坛联播|C罗儿子完成国家队首秀,德约结束与穆雷合作
  • 国务院关税税则委:调整对原产于美国的进口商品加征关税措施
  • 西北大学副校长范代娣成陕西首富?系家庭财富,本人已从上市公司退出
  • 牛市早报|中美日内瓦经贸会谈联合声明公布
  • 男子发寻母视频被警方批评教育,律师:发寻亲信息是正当行为