解决 dvajs Warning: Please use require("history").createHashHistory instead of require("history/cre...

解决 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包。然后重启项目发现成功了~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容