一、谷粒商城人人开源 renren-fast-vue 启动失败

报错信息:

Vue 运行提示<% if (process.env.NODE_ENV === ‘production‘) { %> <% }else { %> <% } %>

image-20210415225909804

当时查了好多资料 ,都是说

https://blog.csdn.net/qq_30396379/article/details/105400919

https://www.cnblogs.com/liuruyi/articles/12308597.html

image-20210415230020026

本质是因为 node-sass 需要指定的 node 版本,so 要不就 node 迁就 sass,要不就 sass 迁就 node,我们一般安装的 node 都是固定的 所以,让 sass 迁就 node 吧

可以尝试卸载重新安装 node-sass

1、卸载 node-sass

1
运行:npm uninstall node-sass

2、重新安装指定的 node-sass 版本(本项目不指定 sass 版本号)

1
2
3
运行:npm install node-sass 不指定版本号系统会根据node版本自动下载sass版本(推荐)

运行:npm install node-sass@4.9.0 指定sass版本号

3、成功后再 npm install

4、npm run dev

二、三级菜单只显示一级的问题

这个大概是因为你复制了别人的 github 代码,而 CategoryController 他的 controller 没有写好。我当然图省事复制了一段代码,结果 controller 和 service 层都写了重复的逻辑。

正确方法是把 controller 逻辑去掉,直接返回即可。

下面的代码是返回父类信息,是父子结点的关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Override // service层
public List<CategoryEntity> listWithTree() {
// 怎么拿categoryDao?
/*
* 继承了ServiceImpl<CategoryDao, CategoryEntity>
有个属性baseMapper,自动注入
* */

// 1 查出所有分类
List<CategoryEntity> categoryEntities = baseMapper.selectList(null);
// 2 组装成父子的树型结构
// 2.1 找到所有一级分类
List<CategoryEntity> level1Menus = categoryEntities.stream().filter(
// 找到一级
categoryEntity -> categoryEntity.getParentCid() == 0
).map(menu->{
// 把当前的child属性改了之后重新返回
menu.setChildren(getChildren(menu,categoryEntities));
return menu;
}).sorted((menu1,menu2)->
menu1.getSort()-menu2.getSort()).collect(Collectors.toList());

return level1Menus;
// return categoryEntities;
}
1
2
3
4
5
6
@RequestMapping("/list/tree")
public R list(){
List<CategoryEntity> entities = categoryService.listWithTree();

return R.ok().put("data", entities);
}

三、Dao 缺少 @Param 注解

报错信息

2021-05-03 23:19:56.361 ERROR 1692 — [io-10000-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘entities’ not found. Available parameters are [collection, list]] with root cause

org.apache.ibatis.binding.BindingException: Parameter ‘entities’ not found. Available parameters are [collection, list]
at org.apache.ibatis.session.defaults.DefaultSqlSession$StrictMap.get(DefaultSqlSession.java:342) ~[mybatis-3.5.2.jar:3.5.2]
at org.apache.ibatis.scripting.xmltags.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:120) ~[mybatis-3.5.2.jar:3.5.2]
at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2719) ~[mybatis-3.5.2.jar:3.5.2]
at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:114) ~[mybatis-3.5.2.jar:3.5.2]

解决方式:

​ 添加**@Param** 注解

image-20210503232115646

四、PubSub is not defined

报错信息

vue.esm.js?3153:591 [Vue warn]: Error in mounted hook: “ReferenceError: PubSub is not defined”

ReferenceError: PubSub is not defined

遇到 PubSub 问题

分类变化后请求没有被监听无法发送查询品牌信息的请求

  1. 首先安装 pubsub-js
1
npm install --save pubsub-js
  1. 订阅方组件

    在 src 下的 main.js 中引用:

1
2
import PubSub from "pubsub-js";
Vue.prototype.PubSub = PubSub;

image-20210504122823251