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解決還在繼續。既然前端沒問題那就是後端的問題啦--移植工程中的一些後端代碼的改動。因此請教的後端同事。
  • 調試方法是:還原移植過程
  • 在還原的過程當中發現了有一個庫被註釋掉了了node

`
// Use bodyParser and multer to parse request bodies and file uploadsreact

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

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

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

`npm

  • 而後將註釋掉的代碼還原,報錯。後端同事有經驗的查看了multer的版本和keystonejs中的版本差異,而後將multer的版本改爲跟原來依賴中的一致。json

  • 運行 問題完美解決
  • 耗時 1 hredux

總結

  • 在移植代碼中要保持庫的版本一致
  • 代碼移植中儘可能不要註釋本身看不懂的代碼,即便註釋了也要記下來,這每每是bug的起源
  • 確認本身的代碼範圍沒問題後。儘可能找有經驗的人幫忙debug吧。畢竟有些bug在有經驗的人面前,就一句話的事

業精於勤荒於嬉,行成於思毀於隨

共勉後端

相關文章
相關標籤/搜索