解决 dvajs Warning: Please use require("history").createHashHistory instead of require("history/createHashHistory")
看到网上好多解决方案都是:
打开node_models/dva/lib/index.js将
var _createHashHistory = _interopRequireDefault(require(“history/createHashHistory”));
改为
var _createHashHistory = _interopRequireDefault(require(“history”).createHashHistory);
可是这只是单独的在我本地项目构建文件的时候解决了问题。
一旦将项目源码发上线,线上服务器打包构建(jenkins teamCity等服务)会重新根据package.json包下载npm包。
重新run build 构建后等包发布到线上还是会出现该问题,因此上述方案并非我需要到解决方案。
正式解决方案
解决思路:
个人觉得dva报这个警告dvajs官方应该是知道的。我思考了一会,是不是dva的版本太低了,需要更新?
笔者本地dvajs版本是2.4.1的版本。
带着这个思路我去npm上搜了下(npm dva的包)发现是 2年前的就是笔者本地安装的版本。

当准备快要放弃的时候。笔者决定去看github上找 dva.js的源码(https://github.com/dvajs/dva)在看源码的时候发现源码https://github.com/dvajs/dva/blob/master/packages/dva/src/index.js 中已经修改了es导入模式:

对比2.4.1版本源码中

既然dva已经为这个做了更新,为什么没有发布呢?
带着这个疑问,我去看了dva源码的github tag版本号,笔者发现在dva@2.6.0-beta.1的tag中,dva已经修改了。

此时,笔者明白了。还是要更新dva的包。可是dva 在npm上是2.4.1的版本,并没有解决呀。那怎么办。
抱着尝试的心态我在本地package.json文件修改dva的版本号为dva的tag号:"dva":"2.6.0-beta.1"。
2.6.0-beta.1 可能在项目中会报 useDispacth没有,所以尽量更新到到"dva":"2.6.0-beta.20"。

yarn重新安装本地package.json的npm包。然后重启项目发现成功了~~~