尚硅谷-2020谷粒学院在线教育项目 【防坑知识点总结】

首先在线教育这个是个好项目,本文主要按照B站评论整理大家说的坑,有点乱见谅,做项目先了解坑能省很多时间,前任踩坑,后人乘凉。印象笔记有重点标注,更加方便保存

印象笔记地址:https://app.yinxiang.com/fx/5dff0a54-4c01-4437-ad67-847688e87964

edu_course表中的subject_parent_id字段需要改为允许为空
资料用为知笔记打开,右上角导入笔记文件夹
GitHub地址:后台–:https://github.com/leikui/k_online_edu
后台管理 vue:https://github.com/leikui/k-online-edu-admin

Invalid bound statement (not found): com…mybatisplus.mapper.UserMapper.selectList 我的@mapperScan写了,并且路径也没有错,mapper也继承了BaseMapper 。 extends BaseMapper忘了加泛型

getWriter() has already been called for this response
你把拦截器配置文件的拦截,全部注释掉,改成放行所有请求,"/*/**"

如果使用vue4.2以后的, 直接从github上clone一份,然后修改Timymce/index.vue中的languageTypeList为zh, 无需在index.html中导入js, 同样需要在info组件中引入然后调用timymce

id自动填充报错类型不匹配是怎么回事
数据库中的是string类型,而entity id上面的自动填充应该是

@TableId(value = “id”, type = IdType.ID_WORKER_STR)
private String id;
看下你是不是写成dType.ID_WORKER

自动代码生成出现乱码了,有遇到同样情况的吗
乱码原因已经解决,是因为mysql数据库的原因,@API*** 后面的乱码,以及注释乱码,是因为我数据库上面的就是乱码

第二天第8集那个扫描别的模块组件可能报错,只要把你创建的包改成三层即可
day05 前端会报一个‘Invalid prop: type check failed for prop “min”. Expected Number, got String.’
这个错误会影响到讲师排序那个序号的增加效果。需将讲师排序的前端 min=“0” 这句改成 :min = “0”

关于第8天课程问题:
(1) 按着给的课程资料代码中写的,创建的VO类与实体类有一个字段不符合实体是“isFree”,VO类是“free”造成编辑课时信息时,是否免费的信息不能回显
(2)有一个小bug ,就点击编辑课时信息没有清除数据

day09,13-14视频顺序错了,要注意

SQL 在项目资料的4-数据库脚本里面的
然后记得关闭eslint 有可能会报没有意义的错误

第25集的Swagger报Unable to infer base url.
如果swagger配在公共模块的情况,你每个服务需要设置组件扫描路径。

@Configuration在service_base模块下无效是啥原因
因为common包里边的依赖没引进去,我是重新建了一个,改了一下名字,把common改成commons就好了

关于使用中文模糊查询不到数据的情况是因为没有配置数据库连接的字符集
spring.datasource.url=jdbc:mysql://localhost:3306/guli?characterEncoding=UTF-8&serverTimezone=GMT%2B8

如果大家看到了spring security的部分视频的话
可能第18天会前端会遇到404报错的问题
问题报http://localhost:8222/admin/acl/login找不到
解决的方法:把第18天的后端源码中common下的spring_sercurity的源码复制 不要用第17天的

下载失败启动不了的看过来,先npm uninstall node-sass, 再cnpm install node-sass 再启动ok

nuxt启动不了怎么办
删掉老师的node_modules和nuxt文件夹 然后自己再npm install 一次就可以了

p82那个讲师更新操作,vue用put请求数据传不上去怎么办,SQL语句中只有id的数据,其他的全是空,
不要用put,用post 老师已经说了 修改也用post

p103课程分类的递归写法分享

第125集,p标签添加的button按钮,点击没有任何反应,何解? 在p标签下面多加几个
换行,因为li 标签还有p标签给挡住的原因
第125集中saveOrUpdate(){}判定修改还是添加时,当修改了(例a1章节)以后再触发添加按钮,并新建(例a2章节)时,还是会显示修改了a1章节,解决办法:
在//修改章节的方法
updateChapter() {}中添加刷新路由即可this.$router.go(0);刷新解决一切

如果大家运行老师的前端项目运行不起来的话,可以自己从github下载最新版的vue-admin-template,然后按照老师教的步骤做就好了

143 144顺序反了

Mvn报错,看视频,后一节会讲到,顺序反了

P147 P148顺序反了
这里注意上传视频失败问题,swagger后台端口正常,上传一闪而过
1.先配置nginx参数

       location ~/eduvod/{
        proxy_pass http://localhost:8003;
        client_max_body_size 1024M;
    }

2.nginx会出现多开情况,重启电脑才可成功
尚硅谷-2020谷粒学院在线教育项目 【防坑知识点总结】_第1张图片
P148\149左右,有个地方设置nginx传输大小,以及前面oos上传头像的地方上传可能报错,原因是大小不够,可以添加下面转发的设置:
location ~ /eduoss/ {
proxy_pass http://localhost:8002;
client_body_buffer_size 2048k;
}

location ~ /eduvod/ {
proxy_pass http://localhost:8003;
client_body_buffer_size 1024m;
}

P167 nuxt如果遇到 Cannot find module ‘@babel/compat-data/corejs3-shipped-proposals’ 直接输入npm install @babel/compat-data

P168视频nuxt整合幻灯片一直报错
现在 你去node_modules 中把vue-awesome-swiper这个文件夹删掉,然后用这个命令安装:
npm i [email protected] 然后按照笔记中的方法引入, 你会来谢我的

P169有个坑。直接执行npm install vue-awesome-swiper安装的是最新版的swiper,会导致npm run dev失败。可以在一开始复制template之后,在package.jason中加上
“dependencies”: {
“nuxt”: “^2.0.0”,
“vue-awesome-swiper”: “^3.1.3"”
},
保证swiper版本是^3.1.3"(和视频中一致)

p170跨域后来发现是 nginx 没有关掉,又多开了
nginx那边得去修改,还有得把他的/vod/ 改为/eduvod/

P174轮播图记得用脚本插入数据,视频里没展示

p198 退出的时候仅仅需要设置cookie里面的两个属性值为空就好了嘛?为啥我的不行? 把图片、姓名设为空

aliyun-java-vod-upload包一直导不进, 复制过来的那个包里面没有jar包而是pom文件,去网上自己找了一个就好了

在阿里云上传视频时候。报413错的 可以在nginx.conf 中在http{}中输入:
client_max_body_size 1024M;(配置请求体缓存区大小, 看视频大小而定)
client_body_buffer_size 128k;(设置客户端请求体最大值)
fastcgi_intercept_errors on;
重启nginx

**服务端口被占用:**win+r打开命令行

  1. 先查看端口(8080)所有连接情况:netstat -ano|findstr “8080”
    显示如下:
    TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1156
    TCP [::]:8080 [::]:0 LISTENING 1156
  2. 再查看 PID=1156 对应进程名称:
    tasklist|findstr “1156”
    显示如下:
    VisualSVNServer.exe 1156 Services 0 8,920 K
  3. 确认之后强制杀掉进程
    taskkill /PID 1156 /F

p103课程分类的递归写法分享
service层

//获取子节点
private List getChildren(SubjectNode node,List eduSubjects){
List nodeTree = new ArrayList<>();

for (EduSubject item : eduSubjects) {
//判断循环的数据是否为当前节点的子节点
if(item.getParentId().equals(node.getId())){
SubjectNode childrenNode = new SubjectNode();
childrenNode.setId(item.getId());
childrenNode.setTitle(item.getTitle());
//通过递归为当前子节点添加子节点
childrenNode.setChildren(getChildren(childrenNode,eduSubjects));
nodeTree.add(childrenNode);
}
}
return nodeTree;
}

public class SubjectNode {
private String id;
private String title;
private List children = new ArrayList<>();
}

service层

//获取课程树
@Override
public List getSubjectTree() {
//课程树
List subjectTree = new ArrayList<>();
//课程数据
List eduSubjects = baseMapper.selectList(null);
//循环取出一条数据
for (EduSubject item : eduSubjects) {
//获取根节点
if (item.getParentId().equals(“0”)){
SubjectNode node = new SubjectNode();
node.setId(item.getId());
node.setTitle(item.getTitle());
//通过递归发放添加子节点
node.setChildren(getChildren(node,eduSubjects));
//将节点封装到课程树种
subjectTree.add(node);
}
}
return subjectTree;
}

大家的点赞是我最大的动力!

你可能感兴趣的:(项目踩坑)