--- title: "26-问题答疑" created: 2025-12-02 tags: - 项目 aliases: - 问题答疑 --- # 问题答疑 ### 1.前端 #### 1.1 项目对应的版本及所需安装的软件 - nodejs 使用 v16 版本,大于 16.14,可以下载 nvm(Node.js 版本管理工具)来切换多个不同的 Node.js 版本。 - JDK 使用 1.8 版本 - Spring Boot 使用 2.x 版本 - 要下载 git([git 安装教程](https://blog.csdn.net/weixin_47638941/article/details/120632890)) 推荐工具 —— [切换和管理 node 版本的工具](https://github.com/nvm-sh/nvm)。 > **注意:** 如果版本不对,一定会在启动、初始化出现问题🐶 鱼友们一定要更改版本或下载对应软件,再进行项目编写。 #### 1.2 为什么标签显示错误? 单引号的问题,json.parse 标准格式应该是单引号包裹双引号的格式,可以把 tags 数组内部的字符串统一为双引号。 #### 1.3 为什么 toast 样式丢失? ![[ab77daac-06f0-41d0-8d55-1dcf106697f2-b003ff4d.png]] ```tsx 把 import'./style.css' 改为: import'vant/lib/index.css' ``` ```tsx 把 // https://vitejs. dev/config/ export default defineConfig({ plugins: [vue(), Components({ resolvers: [VantResolver()], }), ], }) 改为 // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue(), Components({ resolvers: [VantResolver({ importStyle: false, } )], }), ], }) ``` #### 1.4 为什么搜索框没有应用样式? ![[698bea14-2312-4886-a1b3-5dab0ff76530-0d2df7c8.png]] 样式没有引入,仔细检查代码。 #### 1.5 为什么使用 toast 组件报错? 新版本的 vantUI 成功用 showSuccessToast(),失败用 showFailToast()。 #### 1.6 为什么初始化文件、命令与回放中不一致? 因为本项目使用的前端框架 Ant Design Pro 在持续更新,如果在按照视频进行操作时遇到错误,请务必参考官方最新文档中的初始化命令。如果仍然存在报错情况,可以尝试以下步骤: - 首先,检查官方文档中的命令和用法,或切换文档版本为和视频一致的。 - 如果仍然遇到报错,可以将错误信息复制并粘贴到百度搜索中进行查询。 - 如果问题依然存在,可以前往框架的 Github Issues 区域搜索相关问题(比如:[Issues · ant-design/ant-design-pro · GitHub](https://github.com/ant-design/ant-design-pro/issues))。大多数情况下,你遇到的问题已被其他开发者提出,并且可能已经有了解决方案。 运用以上方法,希望鱼友可以更灵活地解决遇到的问题。请记住,任何教程都有保质期,通过学会阅读官方文档和积极自主解决问题,才能在编程学习中突破难,使学习旅程不受任何困扰ヾ(´・ω・`)ノ #### 1.7 为什么页面只有文本,格式乱码(或组件紧凑在一起)? ![[c0e06d32-4efc-4729-b6c3-6dcc37934171-dfe8b2a8.png]] 在 main.ts 引入 'vant/lib/index.css' 后,把其他的样式文件都删了。 #### 1.8 为什么前端导航栏样式居中重叠、组件偏移、组件没有应用上样式? ![[3f60928d-2e3e-4e20-9c1e-48f43a61e267-11319106.png]] 注释掉(或删除)在 main.ts 中的`import./style.css`。 #### 1.9 为什么在用户列表页,按照标签搜索后,后端数据正常返回,但页面卡住,一直处于加载状态? ![[ebb77705-2314-4c1a-9d0c-ba9d2d86d31b-3bc43c57.png]] 在图示位置加 `:loading="loading"`,并在下面定义一个变量`const loading = ref(true);`。 ![[442efa2e-c545-4a31-a1a5-80336237138c-55f087ef.png]] 在红线处加`loading.value = false;`。 ![[bfe45dc5-0a2b-4c93-8d89-9d37fd5662fe-f0ed1dd7.png]] #### 1.10 vant 4 的 data-picker、time-picker 和 vant 3 的 datetime-picker 组件产生的相关问题 ```html ``` ```html ``` #### 1.11 为什么引入按钮组件报错:Internal server error:failed to resolve import ".../node\_module..." file exist? 在 vite.config.js 文件中解析至正确路径。 vant 官网的代码如下: ![[21566ebc-875b-45e4-addf-1e29fd2d23bc-5e68d293.png]] 在 stylelmport 内添加代码块: ![[ced5fbd4-8981-453d-9808-c99599abd084-31698913.png]] 完整代码: ![[71c402b6-ce4e-4eac-9497-db3d4c747c6c-32ef2dce.png]] 修改后,重新运行 vite。 解决参考: #### 1.12 为什么引入 qs 进行序列化之后(或根据 tags 查询用户) myAxios 出现 AxiosError: options must be an object ERR\_BAD\_OPTION\_VALUE? axios版本不一致,需要修改为 1.x 版本写法。 #### 1.13 初始化用 vite 构建项目,为什么 main.js 找不到? 指定一下 module 里引入地址即可。 ![[3c3df594-c7e8-4da1-907c-c454df74ab20-02c22eb4.png]] #### 1.14 为什么登录后界面配置不生效? ![[caa07e1e-205f-4f1c-ac15-2f77c129d59b-7e9af658.png]] 应该是 src/app.tsx 中使用到了 settings 属性,但鱼总修改时删掉了原来的 settings 属性。 #### 1.15 前端拉取鱼总的代码,为什么前端一直不显示? 有可能是依赖问题,重新安装依赖。 #### 1.16 前端拉取鱼总的代码,为什么运行没有登录页面,直接显示主页? 看下路由文件,确认登录页面的地址即可。 #### 1.17 为什么 toast 引入 popup 之后,只显示白色? ![[76991e19-1e18-45e7-8848-84bca73af754-c818fc46.png]] #### 1.18 为什么在调试控制台使用安装依赖命令失败? 要在终端使用安装依赖的命令。 #### 1.19 为什么 Dialog.componemets 失效? 可以看官网:。 在 script setup 中导入import { Dialog } from 'vant'; 然后加入 const VanDialog = Dialog.Component; #### 1.20 为什么重装 node、yarn,无法用脚手架? 可能安装路径存在空格,修改或卸载重装。 #### 1.21 为什么 onClickLeft、onClickRight、active、onChange 已经使用过了,代码还是显示灰色的? ![[852c95e7-6f59-4f07-9bb4-83c0638a4679-9cd2e924.png]] 没有使用 setup 语法糖的话 就需要手动返回数据,或者 setup 语法糖 ,这是 vue3 的语法。 #### 1.22 为什么第 2 次回放中最后提交修改数据返回给后端的值没有具体展示? 可能是打印问题,请使用 consloe.log('values-->o%',values)。 #### 1.23 为什么出现 user.username undefined? 添加 user?.username。 ![[c25698dc-65a6-47cc-ada2-337b2f51cdb9-087fd163.png]] #### 1.24 为什么用标签搜索用户,后端返回的标签数据格式错误? ![[71abfe80-8cea-43ce-bb23-7545840d8c20-3f3988ff.png]] ![[26c99f33-5170-4e1f-b99d-45780f77ed04-d0bc2e34.png]] 后端返回的 tags 必须是数组,而不是字符串。 #### 1.25 前端拉取鱼总的代码,为什么登录请求直接报 403?主页推荐功能也能正常访问到后端,就是登录访问不了? 可能是后端没有配置跨域注解。 #### 1.26 为什么前端初始化,显示 Failed to get response from [http://registry.npm.taobao.org/...?](http://registry.npm.taobao.org/...%EF%BC%9F) ```text #淘宝最新 npm config set registry https://registry.npmmirror.com #阿里云 npm config set registry https://npm.aliyun.com #腾讯云 npm config set registry http://mirrors.cloud.tencent.com/npm/ #华为云 npm config set registry https://mirrors.huaweicloud.com/repository/npm/ ``` ### 2.后端 #### 2.1 为什么后端初始化启动显示 java:错误:无效的源发行版:17? 首先点击锤子旁边的矩形的倒三角,会出现一个下拉框,点击 Edit Configurations。 ![[322a06d2-0b9d-4443-9047-3fcc6f39cc85-35961607.png]] 把 Build and run 下面的改成 java 8(注意不是 18)。 ![[d314878b-4f86-401f-a7cd-550616d69a87-e5bb2723.png]] 点击 File -> settings ->图片中的选项,将 Target bytecode version 改成 8,project bytecode version 改成 8。 ![[8dac28c1-924f-4b51-bfba-d32306c5b0f4-7550fa92.png]] 点击 File -> project Structrue 将project,modules 改成 java 8 ![[2d4097c7-71d6-47d6-b106-30422a77563f-2cd33082.png]] 将上述地方改成相同 JDK。 如果还是显示无效的源发行版:18,只能说明 Maven 上的依赖不对(在pom文件里),再调一个依赖,一定记得要刷新 maven,不然改了之后没用。 ![[006f421d-cfa9-49f9-b7c7-901d56a70e45-23b23716.png]] 请参考这篇文档:[文档](https://blog.csdn.net/tumu6889/article/details/130307386?ops_request_misc=&request_id=&biz_id=102&utm_term=java:%20%E9%94%99%E8%AF%AF:%20%E6%97%A0%E6%95%88%E7%9A%84%E6%BA%90%E5%8F%91%E8%A1%8C%E7%89%88%EF%BC%9A17&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-130307386.nonecase&spm=1018.2226.3001.4187) #### 2.2 为什么 idea 右侧 maven 菜单消失? - help - 或者右键 pom.xml 然后 add as maven project #### 2.3 为什么编写后端接口,生成的单元测试方法提示 no test found? 1)测试文件名或位置不正确 2)依赖缺失或不正确 #### 2.4 为什么创建测试类,插入数据时会报错? ![[fffe04d9-750a-4d08-85b8-23566e0c2884-83678f48.png]] 因为 junit 要用 5 的版本 ![[6b0a56d7-c4f3-40bb-965d-b50bd4abb92a-10f3f7f1.png]] #### 2.5 直接拉取后端代码,为什么请求登录的数据为空呢? 两种方法: 1)数据库的密码是加密的,写个测试类,打印出密码的密文,再存入数据库中的用户表(手动创建用户)1806613115223461889\_0.14535238414417972 2)用注册接口注册一个账号 #### 2.6 为什么无法连接本地 redis? ![[e4128c6a-095b-4671-a08e-39534df76698-4b82be8a.png]] #### 2.7 为什么插入时间会自动 +8 小时? 可以配置下 mysql 默认时区信息看看: /etc/my.cnf [mysqld] default-time\_zone = '+8:00' 或者: 在 Date 字段上加上@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") #### 2.8 为什么提交修改数据返回给后端的值没有具体展示? ![[6807f3a6-c0b9-4519-9539-68d0969ebd5a-c61ae485.png]] 逗号原因。 #### 2.9 为什么 json 解析失败? 数据库 tags 字段有脏数据,排查一下。 #### 2.10 为什么查不到相关数据就会报错,比如查询队伍,只要输入的不是能查到的内容就会产生后端报错? 加上判空(if(CollectionUtils.isNotEmpty(teamList))) ![[8876c689-2f1a-4872-a786-6071b81e4ebb-43411308.png]] ![[c347745a-3fb6-46dd-8148-a09bdb93571a-64e7fc0d.png]] #### 2.11 为什么用编辑距离算法从 ["html/css","大三","男"] 到 ["html/css","大三","男"] 计算距离为 2? 在开始计算的时候先给两个列表排序即可。 ![[c6015700-3e30-4d01-8518-0bf76c383216-043d7f55.png]] #### 2.12 为什么引入 redisson,在测试类进行测试后报错 java.lang.IllegalStateException: Failed to load ApplicationContext? 把 redisson 版本降为 3.17.0。 ### 3.部署&上线 #### 3.1 为什么部署项目之后,登录页面 404? 推荐使用宝塔部署,可以查看用户中心项目最后两期回放学习部署上线操作。 登录页面显示 404 错误,通常意味着服务器无法找到你请求的页面。 1)检查 URL:确保你输入的 URL 是正确的。对比一下你的部署 URL 和本地开发 URL,看看是否有差异。 2)检查文件路径:确认你的登录页面文件是否在正确的位置,并且确保文件名、大小写等都是正确的。 3)检查服务器配置:如果你使用的是 Web 服务器,那么需要查看服务器的配置,确保服务器知道如何处理你的请求。 4)查看服务器日志:服务器的错误日志可能会给出关于问题的更多信息。 5)检查权限:确保服务器有权限访问和执行你的登录页面。 解决参考: #### 3.2 为什么项目部署上线后,明明已经登录成功,但获取的用户都为空,总是显示未登录? ![[b751961f-7693-4e98-94d7-5ae8aae167a5-8db04dd2.png]] 就是出现了跨域请求,但浏览器默认的 SameSite=Lax 是不支持跨域下 cookie 操作的,因此无法设置 cookie。 1)后端设置SameSite属性为“none”。 2)有域名的话要配成一级域名,不能用二级域名 3)设置浏览器,下载插件解决。 解决参考: 如果插件坏了,在SpringBoot写一个配置类去配置SameSite=Lax。 #### 3.3 后端关于 springboot 的 server.servlet.session.cookie.domain 域定位怎么设置? ![[543b73df-f72d-4f22-91b3-0e8c996cdfe0-c1f49696.png]] #### 3.4 为什么上线报安全警告? ![[0fe4ab77-03ae-45b8-8cf5-ebe417ef0954-e49f2cf8.png]] 可能没有对接口进行安全验证,检查漏洞在哪里,或许是没对端口加身份校验。 #### 3.5 为什么本地跑 jar 包没有问题,放服务器跑就有问题? 仔细检查代码,可能是引入的包引入错误。 ![[24b8065e-0dfb-42a1-95bb-0d5285b8bf4b-31119f96.png]] #### 3.6 为什么后端配置了 @CrossOrigin 注解还是会报错? 在后端的 @CrossOrigin 注解加 allowCredentials="true"。 ![[6c6b8aeb-1120-4c12-9343-5504934dfb10-46a516f6.png]] #### 3.7 为什么上线之后 session 可以存到 redis,但是拿不到呢(或 axios 携带 cookie 到后端,为什么无法携带 cookie、直接出现跨域问题)?1806613115223461889\_0.9079900267617886 在 domain 写成自己的域名即可。prod 的 yml: ![[3d0ffd24-2da2-4370-86f9-ca21c211f063-65f00415.png]] 需要申请SSL证书,有了 SSL 证书,我们的域名就成了 https 的。 ![[e02eacaf-ae9c-41e3-b43f-74901597de4b-1bfd7060.png]] 不想申请 SSL 证书了。 #### 3.8 为什么只有 localhost 请求会携带 cookie,127.0.0.1 访问不会携带 cookie? 前后端域名必须一致或者匹配才会带上 cookie。 #### 3.9 为什么用 vite build 打包出的 dist 目录在终端 serve 模式下启动后,主页数据显示不出来? props 前面不能加 this。 #### 3.10 为什么 swagger 文档报错,显示文件请求异常? 未在主类上面加上「@EnableSwagger2WebMvc」注解。 ```yaml spring: mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER ``` #### 3.11 使用 javafx 包为什么会出现 javafx.util.Pair 错误? 服务器 java 版本过低(低于 1.8)。 服务器安装定义 java8 参考: 推荐,直接上传到服务器,解压到可以访问的目录下面[/www/server]。 #### 3.12 为什么启动 build 后,serve 的项目地址和前端设置的默认地址不一样? serve 命令支持切换端口号(),如果想要修改前端访问后端的接口地址,需要修改请求文件中的 baseUrl 属性(项目中讲过)。 #### 3.13 为什么上线后,出现 403 状态码或跨域? 1. 取消掉 @CrossOrigin 这个注解 2. 直接在 config 文件夹下添加跨域配置 3. 前端项目改成如下图所示,改完再进行打包重新部署上线 ![[6f0e72f4-3856-4555-acfe-5aa53533e899-22795b00.png]] 1. 宝塔 nginx 配置文件如下图设置 ![[726d2008-a7a3-461d-a651-d023cab663e9-67ac4e5d.png]] ### 4.提问 #### 4.1 项目里是不是没有实现用户增删标签的功能?那新用户的标签从哪来? 增删标签本质上就是修改用户,写一个 update 就好啦,可以用 json 数组字符串存储多个标签。 #### 4.2 项目初期建的标签表也是在闲着的,如果是拓展标签这块的业务逻辑的话,感觉也是个系统设计? 标签表的好处是可以集中管理有哪些标签可供选择。 #### 4.3 根据标签去搜索用户,如果数据库有上百万条数据,这个根据标签搜索用户应该怎么优化?在内存查询的话也是要把所有的用户都查出来,感觉这种方法性能太低了 可以看下聚合搜索项目,可以先使用 Elasticsearch 去根据标签搜索用户,做一波粗筛,再计算哪些用户匹配的标签(相似度)最高。 #### 4.4 伙伴匹配系统的登录鉴权是靠什么框架完成的?登录鉴权这个问题很是疑惑,不知道是怎么完成的? 没有用框架,直接用 session 来保存用户态,然后根据 session 中数据来判断用户有没有这个权限,不是什么时候都要用 Spring Security 框架的,业务场景很简单的时候自己写个权限判断即可。 #### 4.5 只想看运行效果,只需要下载代码库中的前后端代码吗?还是不能单独运行,同样需要下载用户中心的代码呢? 不需要下载用户中心代码,只需要对着伙伴匹配的前后端进行修改,需要建立数据库 ,还有一些依赖。 ![[e20ac18c-9c66-4dad-9a4e-87ce0810804d-49e7c1e9.png]] 里面有很多鱼友分享的项目总结、扩展、项目网址等等。 ![[13f750e5-acd2-4992-926c-6aef37ef329a-d04f5b75.png]] #### 4.6 有没有伙伴匹配项目的部署教程? 推荐使用宝塔部署,可以查看用户中心项目最后两期回放学习部署上线操作。 #### 4.7 在微信云托管部署的时候,为什么会出现服务部署失败的问题? ![[3ec348f1-7c00-4986-8861-82fb22ea7e8b-a592facd.png]] docker 暴露的端口和项目端口不一致,docker 暴露的端口和项目端口不一致。 #### 4.8 项目需要花多长时间写完? 8 天左右。 #### 4.9 分页查询的结果是 Page 类型,怎么进行数据脱敏呢? 分页最后生成的对象是 ipage 对象,他里面有一个 getRecords 方法获取集合,然后使用 stream 进行脱敏,脱敏后的集合,在重新赋值给 lpage 对象。 #### 4.10 项目卡着进行不下去了,学的前端,后端一点不会,这种情况怎么处理? 1.找伙伴 2.看回放自己敲代码死磕 3.拉取代码死磕 #### 4.11 已经实现的功能可以用来做毕设吗? 可以拿来做毕设,具体看学校是否允许。 --- **项目分区导航**:⬅️ [[25-面试-答辩|25-面试-答辩]] | 26-问题答疑 | ➡️ [[01-API 开放平台项目介绍|01-API 开放平台项目介绍]]