解決 dvajs Warning: Please use?require("history").createHashHistory?instead of?require("history/createHashHistory")
看到網(wǎng)上好多解決方案都是:
? ? ? 打開node_models/dva/lib/index.js將
? ? ? var _createHashHistory = _interopRequireDefault(require(“history/createHashHistory”));
? ? ? 改為
? ? ? ?var _createHashHistory = _interopRequireDefault(require(“history”).createHashHistory);
可是這只是單獨(dú)的在我本地項(xiàng)目構(gòu)建文件的時(shí)候解決了問題。
一旦將項(xiàng)目源碼發(fā)上線,線上服務(wù)器打包構(gòu)建(jenkins teamCity等服務(wù))會(huì)重新根據(jù)package.json包下載npm包。
重新run build 構(gòu)建后等包發(fā)布到線上還是會(huì)出現(xiàn)該問題,因此上述方案并非我需要到解決方案。
正式解決方案
解決思路:
個(gè)人覺得dva報(bào)這個(gè)警告dvajs官方應(yīng)該是知道的。我思考了一會(huì),是不是dva的版本太低了,需要更新?
筆者本地dvajs版本是2.4.1的版本。
帶著這個(gè)思路我去npm上搜了下(npm dva的包)發(fā)現(xiàn)是 2年前的就是筆者本地安裝的版本。

????當(dāng)準(zhǔn)備快要放棄的時(shí)候。筆者決定去看github上找 dva.js的源碼(https://github.com/dvajs/dva)在看源碼的時(shí)候發(fā)現(xiàn)源碼https://github.com/dvajs/dva/blob/master/packages/dva/src/index.js?中已經(jīng)修改了es導(dǎo)入模式:

對比2.4.1版本源碼中

既然dva已經(jīng)為這個(gè)做了更新,為什么沒有發(fā)布呢?
帶著這個(gè)疑問,我去看了dva源碼的github tag版本號(hào),筆者發(fā)現(xiàn)在dva@2.6.0-beta.1的tag中,dva已經(jīng)修改了。

此時(shí),筆者明白了。還是要更新dva的包??墒莇va 在npm上是2.4.1的版本,并沒有解決呀。那怎么辦。
抱著嘗試的心態(tài)我在本地package.json文件修改dva的版本號(hào)為dva的tag號(hào):"dva":"2.6.0-beta.1"。
2.6.0-beta.1 可能在項(xiàng)目中會(huì)報(bào) useDispacth沒有,所以盡量更新到到"dva":"2.6.0-beta.20"。

yarn重新安裝本地package.json的npm包。然后重啟項(xiàng)目發(fā)現(xiàn)成功了~~~