• 今天要调试bug,先说明一下背景!有需求要修改keystonejs的后台管理页面,然后是看官方文档知道后台管理也是react+redux.然后为了加强后台管理页的功能(如汉化),然后将keystonejs的后台管理页面看完了。基本是可以看得动的。为了不破坏原来的功能且为了好用,就必须将原来/Users/ivanlee/Documents/2018/work/szhealth/node_modules/.npminstall/keystone/4.0.0-beta.5/keystone/admin中的代码移植到外面可用.在项目中的keystone.js中加入一些代码

      keystone.set('MY_ADMIN_PATH',process.env.MY_ADMIN_PATH || 'admin');
    
      keystone.Admin = {
    Server: require('./admin/server'),
    };
    keystone.set('pre:admin',function (app) {
    // console.log(keystone.get('MY_ADMIN_PATH'),'my_admin_path'); app.use('/' + keystone.get('MY_ADMIN_PATH'), require('./admin/server').createStaticRouter(keystone));
    app.use('/' + keystone.get('MY_ADMIN_PATH'), require('./admin/server').createDynamicRouter(keystone));
    })
  • 然后在admin中加强自己的功能。但是发现,移植后的代码在详情页中修改页面不生效。bug,因为一开始就怀疑是自己的增强前端中代码改错了的问题。所以就自己将代码重新看一遍,验证自己的前端代码是没有问题的,代码输出的states和props都是符合要求的,然后再看admin中的后端代码,看了半天还是不知道错误再哪里。花了一个早上,确定了前端是没有问题的。

  • bug解决还在继续。既然前端没问题那就是后端的问题啦--移植工程中的一些后端代码的改动。所以请教的后端同事。

  • 调试方法是:还原移植过程

  • 在还原的过程中发现了有一个库被注释掉了了

`

// Use bodyParser and multer to parse request bodies and file uploads

router.use(bodyParser.json({}));

router.use(bodyParser.urlencoded({ extended: true }));

//router.use(multer({ includeEmptyFields: true }));

`

  • 然后将注释掉的代码还原,报错。后端同事有经验的查看了multer的版本和keystonejs中的版本差别,然后将multer的版本改成跟原来依赖中的一致。

  • 运行 问题完美解决

  • 耗时 1 h

总结

  • 在移植代码中要保持库的版本一致
  • 代码移植中尽量不要注释自己看不懂的代码,即使注释了也要记下来,这往往是bug的起源
  • 确认自己的代码范围没问题后。尽量找有经验的人帮忙debug吧。毕竟有些bug在有经验的人面前,就一句话的事

业精于勤荒于嬉,行成于思毁于随

共勉

keystonejs开发中解决bug--版本要对应的更多相关文章

  1. 转:移动开发中一些bug及解决方案

    网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...

  2. iOS开发中常见bug!(内附解答方法)

    序言 你是否曾经修复了一个 bug ,随后又发现了一个跟刚修复 bug 有关的 bug ,又或是修复 bug 的方式引起了另一个 bug ? 然而这些问题是绝佳的学习机会.所以我们怎样尽可能多地从修复 ...

  3. asp.net5开发中DNX SDK版本的影响

    某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图: 但是编译时出现了几百个错误: 错误基本都是形如“CS0246 The type or namespa ...

  4. 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用

    背景: 笔者在用cordova开发安卓程序的时候在安卓设备上不存在跨域问题,但是在浏览器端模拟调试的时候却出现了Access-Control-Allow-Origin跨域问题,报错如下 No 'Acc ...

  5. MyBatis开发中解决返回字段不全的问题

    场景重现: mybatis 在查询的时候,可以返回Map,但是一旦这个字段为空(null)的时候,map里就没有了.我用的是mysql数据库,除了在查询语句上做ifnull判断给它默认值外,有没的别的 ...

  6. iOS开发中的系统版本比较

    由于系统平台和SDK更新迭代,一部分过时的成员.方法会被彻底从SDK中移除,为了兼容旧的设备,这时就需要区分系统平台版本调用正确的API. 另一种情况是iOS设备的屏幕和设备参数不同,虽然UI上的Au ...

  7. Java开发中解决Js的跨域问题

    主流方法有JSONP和CORS两种,这里记一下后者的方式,理论基础就是在请求的时候在http请求头中添加如下属性: //指定允许其他域名访问 Access-Control-Allow-Origin:h ...

  8. JQuery Table 合并单元格-解决Bug版本

    网络中提供的方法是: <script type="text/javascript"> function _w_table_rowspan(_w_table_id, _w ...

  9. springmvc框架开发中解决产生的乱码情况

    一:解决post请求方式产生的乱码情况 示例代码如下: <!-- 解决post乱码 --> <filter> <filter-name>CharacterEncod ...

随机推荐

  1. 你可能不知道的5种 CSS 和 JS 的交互方式

    翻译人员: 铁锚 翻译日期: 2014年01月22日 原文日期: 2014年01月20日 原文链接:  5 Ways that CSS and JavaScript Interact That You ...

  2. 放yy直播点赞动画

    最近在做直播相关的东西,这个动画是IOS先撸出来的,后来android这边要模仿,大部分直播应用都有很炫酷的点赞动画,所以也没什么好稀奇的.如果有现成的轮子了,就没必要自己再造了,后来参照了程序亦非猿 ...

  3. Dynamics CRM ISV文件夹禁用后的解决方案

    众所周知微软在CRM2011的12补丁后取消了对ISV文件夹的支持,那我们自定义开发的一些web应用或者是想部署个服务该怎么办,有的选择了另开一个站点发布.我们以服务为例这样的另开站点的发布方式会导致 ...

  4. LDA和PCA

    LDA: LDA的全称是Linear Discriminant Analysis(线性判别分析),是一种supervised learning.有些资料上也称为是Fisher's Linear Dis ...

  5. linux 网络不通问题排查

    基本的排错步骤(从上往下)ping 127.0.0.1ping的通说明tcp协议栈没有问题ping 主机地址 ping的通说明网卡没有问题ping 路由器默认网关 ping的通说明包可以到达路由器最后 ...

  6. Linux - /etc/passwd和/etc/shadow文件结构

    /etc/passwd文件结构 1.账号名称:         就是账号啦!用来对应 UID 的.例如 root 的 UID 对应就是 0 (第三字段):     2.口令:         早期 U ...

  7. TCP连接建立系列 — 服务端接收SYN段

    本文主要分析:服务器端接收到SYN包时的处理路径. 内核版本:3.6 Author:zhangskd @ csdn blog 接收入口 1. 状态为ESTABLISHED时,用tcp_rcv_esta ...

  8. Oracle EBS ERP中月结年结的流程总结

    月结与年结处理,是企业财务比较特殊而重要的业务操作.在实施与推广OracleERP系统过程中,如何结合现行的会计制度与惯例,充分利用软件功能,做好相应的关账.开账工作,是困扰许多企业财务人员乃至实施顾 ...

  9. How tomcat works 读书笔记十二 StandardContext 上

    在tomcat4中,StandardContext.java是最大的一个类,有117k.废话不说,开始分析吧. 其实要分析StandardContext,也就主要分析两个方法,一个start,一个in ...

  10. 解决ecshop3.6 H5版本公告页面为空的修改办法

    ecshop3.6公告页面打开如下,页面完全无效果,如下图. 经过简单美化后,有返回按钮,页面加以美化.如下图. 是不是要好看多了.简单修改几步即可. 修改文件 \appserver\resource ...