如果你使用了element-ui
的el-tabs
组件,并且想要单独升级element-ui
至2.10.0
,你会发现,使用了el-tabs
组件的页面只要打开就卡死。原因是element-ui~2.10.0
采用了不兼容vue~2.5.10
的写法。于是我尝试系统性升级vue
全家桶,这也是为系统赋予更多能力做准备。结果遇到一些报错,这里记录一下。
升级过程
当前版本
vue: 2.5.10
vue-loader: 13.5.0
vue-router: 3.0.1
vuex: 3.0.1
axios: 0.17.1
element-ui: 2.2.2
目标版本
vue: 2.6.10
vue-loader: 15.7.0
vue-router: 3.0.3
vuex: 3.1.1
axios: 0.18.1
element-ui: 2.10.0
报错1(包版本不匹配)
修改package.json
中的依赖包版本号之后,npm install
一波后就报错了。
1 | Vue packages version mismatch: |
分析:vue
和vue-template-compiler
两个包的版本不匹配,需要升级vue-template-compile
。github搜索这个包搜不到,最后在npm包官网找到了。
解决方案:升级vue-template-compile: 2.6.10
报错2(vue-loader)
1 | | |
分析:经观察,发现可能是不识别vue
文件或其中某部分,于是从vue-loader
入手,也在网上查阅了一些资料,需要在webpack
的plugins
中加入vue-loader/lib/plugin
。
解决方案:
1 | const VueLoaderPlugin = require('vue-loader/lib/plugin') |
报错3(postcss-loader)
1 | (Emitted value instead of an instance of Error) |
分析:这里面的错误是关于postcss-loader
的,只要将config/index.js
中dev.cssSourceMap
设置为true
即可。
警告1(svg-sprite-loader)
升级过程中还遇到了一个警告,虽然不影响功能,但是看着还是很难受的。
1 | in ./src/icons/svg/workList.svg |
搜索关键词后,发现网上并没有此类答案。因此我考虑是版本问题,于是升级svg-sprite-loader
至最新版本4.1.6
,解决了这个警告问题。
总结
至此升级过程就完成了!顺便一提,系统性升级必须要经过全面测试,否则你难以保证完全向下兼容哦!
扫一扫下方小程序码或搜索Tusi博客
,即刻阅读最新文章!