今天要調試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)); })
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
的起源bug
在有經驗的人面前,就一句話的事共勉後端