• 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在有经验的人面前,就一句话的事

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

    共勉

  • 相关阅读:
    fork和Vfork的区别
    exer4.13.c(undone)
    Exer4.6.c(undone)
    好习惯
    c语言中的register修饰符
    请教如何在页面之间传递dataSet?不用session
    ultraEdite编辑shell或perl程序时注意
    PowerBuilder程序中取数据库中值,值异常(正数变成负数或异常)
    pb程序的编译发布
    关于sql server2000 的1068 与 1069 问题
  • 原文地址:https://www.cnblogs.com/ivanlee-ee-233/p/9003830.html
Copyright © 2020-2023  润新知