caniuse 库过期问题的原因
uni-app
的编译器是基于npm
的,依赖了众多包括mpvue、webpack
在内的npm
库,这些库又引用了一个三方库caniuser-lite
。
caniuser-lite
这个库的代码里有个浏览器兼容数据的更新检查,过老的数据影响自动补齐 css 前缀。
开发者平时写 uni-app 时并不需要手动补浏览器的 css 前缀,就是因为这个库在自动补前缀。 这个库它自己每半年过期一次,过期后会报错如下:
Browserslist: caniuse-lite is outdated. Please run next command `npm update caniuse-lite browserslist`
这个报警不影响编译成功,只是告警
对于熟悉 npm 的开发者,这个报警不足为奇,按命令提示更新即可。
但 HBuilderX 的很多开发者不熟悉 npm,遇到问题可能就不知该怎么办了。 目前可用的解决方案如下几种:
解决方案 1,升级 HBuilderX 或 cli
不要用半年前的 HBuilderX
,或 cli
,持续保持升级。(目前 HBuilderX
正式版确实未及时更新导致过期,很快会发更新解决。另外 alpha
版是正常的)
解决方案 2,在老版 HBuilderX 下手动升级 caniuse-lite 的 npm 库
如果不想升级 HBuilderX
,也可在老版下解决问题。
- 项目是
HBuilderX
创建的- 打开
HBuilderX
的安装目录,HBuilderX/plugins/uniapp-cli
- 打开
删除 node_modules
以及 package-lock.json
– 在当前目录执行 npm install
- 如果你的项目是
cli
创建的,请自行在cli
环境下升级npm
包