前端问题

码匠君 ... 2021-10-28 大约 3 分钟

# 前端问题

# 暂时不要升级的依赖包

依赖包 当前使用版本 最新版本 说明
compression-webpack-plugin 6.1.1 > 9.2.0 目前不要升级该包,该包依赖高版本Webpack,在当前版本不兼容,待升级至Vue3 才可以考虑升级。
css-loader 5.2.7 > 6.3.0 目前不要升级该包,编译时会抛错误
rollup-plugin-vue 5.1.9 > 6.0.0 目前不要升级该包,该包依赖高版本组件,在当前版本不兼容,待升级至Vue3 才可以考虑升级。长时间未更新,升级至 Vue3 可能就不再需要使用该组件
sass 1.32.8 > 1.47.0 目前不要升级该包,会出现很多样式除法过期的提示,需要等到Vuetify大版本升级后再考虑
sass-loader 10.1.1 > 12.4.0 目前不要升级该包,最新版本很多包还有没有适配
typescript 4.2.3 > 4.5.4 目前不要升级该包,系统当前使用typescript-ioc组件进行服务注入,该组件已不再维护,在typescript >4.2.3版本中无法正确注入。 待升级至 Vue3 以后,使用composition api,就不再使用ioc注入模式
vue-chartist 2.3.1 = 3.0.0 目前不要升级该包,基于Vue3的版本,当前版本不兼容
webpack 4.46.0 > 5.40.0 目前不要升级该包,compression-webpack-plugin会抛错误
vuex-module-decorators 1.0.1 = 2.0.0 目前不要升级该包,基于Vue3的版本,当前版本不兼容

# 问题一:升级依赖包时出错

使用yarn upgrade-interactive --latest命令升级依赖包的时候,特别是@hecate/form-service 中,有依赖包可以升级时(目测是由于使用了 Nuxt),经常会出现下面的错误。

Invariant Violation: expected workspace package to exist for "autoprefixer"
    at invariant (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:2314:15)
    at _loop2 (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:94537:9)
    at PackageHoister.init (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:94596:19)
    at PackageLinker.getFlatHoistedTree (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:48744:20)
    at PackageLinker.<anonymous> (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:48755:27)
    at Generator.next (<anonymous>)
    at step (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:310:30)
    at D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:328:14
    at new Promise (<anonymous>)
    at new F (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:5301:28)
1
2
3
4
5
6
7
8
9
10
11

这个问题是 yarn 本身的 Bug,虽然 yarn 已经升级到了 1.22.10,但是一会好一会不好的。

# (1)解决办法一

在工程中将 yarn 的版本,降到 1.19.XX。这种方法,只对本工程有效,这样其它工程仍旧可以使用最新版的 yarn,避免了全局安装低版本 yarn 的问题

yarn policies set-version 1.19.XX

// .yarn 目录生成后,执行
yarn install
1
2
3
4

这个命令会在工程中生成一个.yarn 目录以及一个.yarnrc 文件,并在其中指定 yarn 版本。

# (2)解决办法二

这种办法土一点,但是可以不用去理会 yarn 的不管问题。

// 1,先查询看看那些包可以升级
yarn upgrade-interactive --latest

// 2,到指定的包的package.json中,手工修改版本号

// 3,清除组件包的依赖
lerna clean

// 4,重新关联依赖
lerna bootstrap

或

yarn install
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 问题二:运行命令是出现禁止脚本运行的错误

解决方法:打开 PowerShell(在小娜里搜就行),输入:

set-executionpolicy remotesigned
1

之后选择 Y,问题就解决了。

上次编辑于: 2022年1月12日 20:34
贡献者: herodotus , 码匠君