以下升级的内容,全部是本人通过的旧项目经过很久的时间以后,重新还原依赖运行出错发生过的一系列情况,以下情况可能不是非常的完整,但是已经可以解决大部分项目依赖冲突的问题。如果大家出现一些特殊的情况按照下面的方式无法解决,若需要完全解决的情况下,需要查看运行错误信息,以及项目依赖情况信息后再针对情况进行解决。
node-sass
更新为sass
- 在
node16
以上的版本不再支持node-sass
,所以我们推荐将node-sass
更新为sass
,同时安装sass-loader
推荐安装版本为10
,最新版本支持this.getOptions
,会造成报错。 - 修改
sass
环境的同时,全局替换/deep/
为::deep
,需注意,新的deep写法后有个空格,如果出现::v-deep.class
这样的写法,样式可能失效。
- 在
npm uninstall node-sass sass-loader
npm i -D sass sass-loader@10
-
node环境过高(18+),项目启动失败
- 需在
package.json
中的scripts
中添加一行代码,然后通过该命令npm run serve:old
启动项目。添加内容:
"serve:old": "set NODE_OPTIONS=--openssl-legacy-provider & npm run serve"
,
- 需在
-
无论旧项目是否出现此问题,都可以按照此操作去进行调整。
以往问题出现:在安装依赖后
@vue/compiler-sfc
提示无法运行。
也曾经因为这个问题导致:Cannot destructure property ‘script‘ of ‘result.descriptor‘ as it is undefined
- 若项目中的
vue
版本为^2.x.x
,则将其版本改为~2.x.x
。 - 将
vue-template-compiler
的版本也改为~2.x.x
; - 将
vue-router
版本限定为~x.x.x
;(版本不得高于3.5
,会出现类型识别错误的可能,与typescript
有关)
-
当项目运行或打包过程中出现
@types/node
语法相关字眼问题时,需要检查当前项目的tyepscript
版本与@types/node
版本是否兼容。
a. 当项目中的typescript
版本为^@2.x.x
时,需要给项目安装@types/node@^13.x.x
的Dev依赖。
b. 当项目中的typescript
版本为^@3.x.x
时,需要给项目安装@types/node@^17.x.x
的Dev依赖。
c. 当项目中的typescript
版本为^@4.x.x
或^@5.x.x
时,需要给项目安装@types/node@^20.x.x
的Dev依赖。 -
若项目依赖中存在
vue-class-decorator
时将其删除(内部针对vue
进行了依赖,将导致环境中vue
版本不正确,存在多版本),并安装@some21/vue-class-decorator
;
a. 随后将项目中所有引用的vue-class-decorator
调整为@some21/vue-class-decorator
;
b. 安装@vue/composition-api
到研发依赖当中。 -
若项目依赖中不存在
vue-loader
,安装vue-loader@^15
。 -
若项目中同时使用了
vxe-table
并使用了babel-plugin-import
进行按需加载时,需要注意babel-plugin-import
的版本最好是固定或者小于1.13.6
的版本,目前发现1.13.8
的版本会导致vxe-table
语法检测识别错误的情况。 -
对于旧项目,如果本地的
cpnm>=v8
以后的版本后,还原依赖无效或者失败,可以尝试还原指令cnpm i --by=npm --legacy-peer-deps
进行还原,针对后续新的项目同样可以使用此指令。若并无此问题情况可以忽略(目前问题在vue/cli 的使用过程中发现)
如果以上操作完成以后,运行项目还是存在问题异常,欢迎留言反馈,若有需要可以进行协助,同时也会将缺少的部分加入到文档当中。