用户中心项目总结(不完全踩坑记录)

#用户中心项目总结


花了两个星期大致完成了在星球的第一个项目,中间过了个年,鸽了好几天😢,下面分享一下个人的踩坑记录和一些心得。


因为之前没有用过类似的框架,这个项目的ant design pro前端属实让我琢磨了好一阵。


首先是跟着鱼皮大大安装初始化脚手架,创建前端项目。


Mybatis 新增用户时出现


java.sql.SQLSyntaxErrorException: Unknown column 'user_account' in

'field list'的bug,这是因为数据库字段没有下划线,mybatis默认会采用驼峰命名法,在配置关掉即可



然后还学会了通过idea自带的测试工具发送请求。


还有一个新的知识点(对我来说),

session的校验机制--HttpServletRequest request,详细可以看鱼总的视频。


之前数据库操作都是mybatis,这次运用了一些mybatis-plus的操作。如selectOne、removeByid等。


#bug


前端页面出现umibundling50%

error -

./src/.umi/core/route.tsx:109:23-115


Module

not found: Error: [CaseSensitivePathsPlugin] `D:\java\YUPI\用户中心\myapp\src\pages\User\register\index.tsx`

does not match the corresponding path on disk `Register`


错误信息中提到的路径是D:\java\YUPI\用户中心\myapp\src\pages\User\register\index.tsx,而对应的路径名应该是Register。根据错误信息,可以猜测是因为路径大小写不匹配导致了这个错误。



后端

控制台输出报错:Note: further occurrences of

HTTP request parsing errors will be logged at DEBUG level.


看来是在解析HTTP请求行时出现了问题。具体地,错误消息指出在方法名中发现了无效字符,导致无法正确解析HTTP请求。


根据HTTP协议规范,HTTP方法名必须是令牌(token),也就是说,它们必须由ASCII可打印字符组成,且不能包含空格或特殊字符。


所以在vscode全局搜索token,找到应该是requestErrorConfig这里,注释掉




然后还是报一样的错:


Note: further

occurrences of HTTP request parsing errors will be logged at DEBUG level.


发现原来是在proxy.ts这里http后多加了“s”,删掉后问题解决



复现3.25笔记时出现了bug:子路由无法渲染出来。


找了很久,折腾了好久呜呜呜,在github的issue区🧐[问题 | question] 子路由渲染问题 · Issue #11142 ·

ant-design/ant-design-pro · GitHub找到答案,


只需要在父级路由使用<Outlet/>渲染子路由,手动导入'umi',即可成功渲染出右侧./Admin/UserManage



部署时,我尝试了从0到1和宝塔两种方式,特别是第一种,中间遇到了很多问题,比如

修改url为url: jdbc:mysql://120.26.218.238:3306/user_center,然后重新package打成jar包即可。


部署前端时遇到一些端口问题,知道网站默认端口号是80,要改成自己在nginx.conf设置的端口号,才可以正确渲染。可以参考这篇文章:

https://ww.dandelioncloud.cn/article/details/1510953291075932161


后端部署安装java,参考

https://blog.csdn.net/LiuLiYanSha/article/details/132494473?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170791190616800197057740%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170791190616800197057740&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-132494473-null-null.142^v99^pc_search_result_base9&utm_term=%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85java17&spm=1018.2226.3001.4187

然后就是结合大大们的笔记和视频


不过有个疑问:进程进行中,当然可以连接到后端,如果服务器开着,但是没有人为执行进程,也可以正常连接到后端吗?


##宝塔部署


在添加站点,输入网址出现bug



Npm run build 构建前端项目

找了一通发现原来是上传dist文件时出错,应该上传dist文件夹内的所有文件,不用把dist这个文件夹也上传。


部署后端时,有个现象让我百思不得其解,有懂的小伙伴麻烦告诉我!!!感谢!

这个是在本地vscode运行的,直接发送请求给后端了,相当于postman,但是端口号理论上应该是8989(我后端端口号是8989),而不是8000(居然也能成功获得返回结果)!?


部署前端时,直接输入公网ip可以渲染出界面,但是刷新一下或者手动输入/user/login,则会报错404 Not found

在配置文件加入以下代码


  1. location / {
  2. try_files $uri $uri/ @router;
  3. index index.html;
  4. }
  5. location @router {
  6. rewrite ^.*$ /index.html last;
  7. }

则不会出现以上问题辣。


##docker安装镜像


Docker部署


在宝塔安装docker后,


在后端新建Dockerfile文件(鱼皮大大版本)


FROM

maven:3.5-jdk-8-alpine as builder


# Copy local code to

the container image.


WORKDIR /app


COPY pom.xml .


COPY src ./src


# Build a release

artifact.


RUN mvn package

-DskipTests


# Run the web

service on container startup.


CMD

["java","-jar","/app/target/user-center-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]


然后重新git上传后,宝塔终端拉下来



但是部署后查不到对应的docker,或者说报错了应该是maven的问题


找不到解决方案后我重新找了一份dockerfile文件


FROM

openjdk:8-jdk-alpine


# Copy local code to

the container image.


WORKDIR /app


COPY

./target/user-center-0.0.1-SNAPSHOT.jar /app/user-center.jar


# Build a release

artifact.


EXPOSE 8989


# Run the web

service on container startup.


CMD

["java","-jar","user-center.jar","--spring.profiles.active=prod"]



构建成功!



这里我又遇到个bug



这应该是jdk版本问题 服务器java版本是jdk17



而我刚开始dockerfile中版本是jdk8,所以docker拉取不到java运行版本的镜像,所以更新dockerfile即可。


FROM openjdk:17-jdk-alpine


# Copy local code to

the container image.


WORKDIR /app


COPY

./target/user-center-0.0.1-SNAPSHOT.jar /app/user-center.jar


# Build a release

artifact.


EXPOSE 8989


# Run the web

service on container startup.


CMD

["java","-jar","user-center.jar","--spring.profiles.active=prod"]


测试一下,访问后端,成功



这里我又想向大佬们提问:

①宝塔面板需要在纯净环境下安装软件,那如果在服务器终端安装某些软件,那在宝塔软件商店也可以重复安装吗,会不会有冲突呢?

②还有宝塔面板的“安全“一栏,有显示开放的端口号,这和云服务器的安全组一致吗,服务器的防火墙所罗列的端口号又有什么关系呢

③部署前端时,我发现在前端的proxy,ts有对‘api’代理,但是宝塔的站点也有专门的反向代理,甚至可以在“配置文件”和“反向代理”一栏更改,那会不会冲突呢?

以上不完全记录,感谢大家浏览,大家晚安!


#用户中心项目 #项目总结

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
尺v尺
下载 APP