谷粒商城项目Bug整理总结

2022-03-20 12:41:17 浏览数 (1)

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

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

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

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

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

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

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

1、卸载node-sass

代码语言:javascript复制
运行:npm uninstall node-sass

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

代码语言:javascript复制
运行: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逻辑去掉,直接返回即可。

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

代码语言:javascript复制
@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;
}
代码语言:javascript复制
@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.DefaultSqlSessionStrictMap.get(DefaultSqlSession.java:342) ~[mybatis-3.5.2.jar:3.5.2]at org.apache.ibatis.scripting.xmltags.DynamicContextContextAccessor.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** 注解

四、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
代码语言:javascript复制
npm install --save pubsub-js
  1. 订阅方组件 在src下的main.js中引用:
代码语言:javascript复制
import PubSub from 'pubsub-js'
Vue.prototype.PubSub = PubSub

0 人点赞