keystonejs开发中解决bug--版本要对应
今天要调试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--版本要对应的更多相关文章
- 转:移动开发中一些bug及解决方案
网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...
- iOS开发中常见bug!(内附解答方法)
序言 你是否曾经修复了一个 bug ,随后又发现了一个跟刚修复 bug 有关的 bug ,又或是修复 bug 的方式引起了另一个 bug ? 然而这些问题是绝佳的学习机会.所以我们怎样尽可能多地从修复 ...
- asp.net5开发中DNX SDK版本的影响
某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图: 但是编译时出现了几百个错误: 错误基本都是形如“CS0246 The type or namespa ...
- 开发中解决Access-Control-Allow-Origin跨域问题的Chrome神器插件,安装及使用
背景: 笔者在用cordova开发安卓程序的时候在安卓设备上不存在跨域问题,但是在浏览器端模拟调试的时候却出现了Access-Control-Allow-Origin跨域问题,报错如下 No 'Acc ...
- MyBatis开发中解决返回字段不全的问题
场景重现: mybatis 在查询的时候,可以返回Map,但是一旦这个字段为空(null)的时候,map里就没有了.我用的是mysql数据库,除了在查询语句上做ifnull判断给它默认值外,有没的别的 ...
- iOS开发中的系统版本比较
由于系统平台和SDK更新迭代,一部分过时的成员.方法会被彻底从SDK中移除,为了兼容旧的设备,这时就需要区分系统平台版本调用正确的API. 另一种情况是iOS设备的屏幕和设备参数不同,虽然UI上的Au ...
- Java开发中解决Js的跨域问题
主流方法有JSONP和CORS两种,这里记一下后者的方式,理论基础就是在请求的时候在http请求头中添加如下属性: //指定允许其他域名访问 Access-Control-Allow-Origin:h ...
- JQuery Table 合并单元格-解决Bug版本
网络中提供的方法是: <script type="text/javascript"> function _w_table_rowspan(_w_table_id, _w ...
- springmvc框架开发中解决产生的乱码情况
一:解决post请求方式产生的乱码情况 示例代码如下: <!-- 解决post乱码 --> <filter> <filter-name>CharacterEncod ...
随机推荐
- 高通 MSM8K bootloader 之四: ramdump
前面说过高通平台,系统crash发生时,抓取crash ramdump非常重要,否则很难定位crash原因. 平台默认抓取ramdump的方法都有很强的局限性,如下: 1.PC端工具QPST提供的 M ...
- spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定
本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...
- kettle简介(整体架构,运行方式,使用方法)
项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出.呵呵,外国人都很有联想力.看了提供的文档,然后对发布程序的简单试用后,可以很清楚得看到Kettle的四大块: Chef ...
- AngularJS进阶(一)深入理解ANGULARUI路由_UI-ROUTER
深入理解ANGULARUI路由_UI-ROUTER 最近在用 ionic写个webapp 看到几个demo中路由有好几种,搞的有点晕,查下资料研究下,做个笔记,其中大部分为摘抄别人的,做个说明免得被人 ...
- android 高仿京东
android 高仿京东源码,两年前的作品,最近发现一些老代码,发布出来给初学者学习,下面附上几张展示的效果,有需要的请到下面地址下载,记得stare哦 https://github.com/xian ...
- Android全局异常处理 实现自己定义做强制退出和carsh日志抓取
在做android项目开发时,大家都知道都会遇到程序报错或者Anr异常,会弹出来一个强制退出的弹出框,对于开发人员是好事,但是对于用户体验和 UI实在毫无违和感,别说用户接受不了,就连我们自己本身可能 ...
- Leetocde_290_Word Pattern
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/49717803 Given a pattern and a ...
- 自定义蜘蛛网图 NetView
概述 写论文忙里偷闲写了一个蜘蛛网图的自定义view,支持多重属性 有图才能有真相,下面先上图 主要支持网格颜色.tag文本.覆盖区域颜色.透明度的属性改变,具体使用可以参见我的githubgithu ...
- SVN中更改连接用户
Eclipse中安装了SVN插件,当连接到SVN服务器后,便无法从客户端更改连接帐号 百度一下,也就知道 查看Eclipse中使用的是什么SVN Interface,位置在 windows > ...
- caffe中是如何运用protobuf构建神经网络的?
caffe这个框架设计的比较小巧精妙,它采用了protobuf来作为交互的媒介,避免了繁重的去设计各个语言的接口,开发者可以使用任意语言通过这个protobuf这个媒介,来运行这个框架. 我们这里不过 ...