关于vue2.0的旧项目运行失败时的可参考升级策略

以下升级的内容,全部是本人通过的旧项目经过很久的时间以后,重新还原依赖运行出错发生过的一系列情况,以下情况可能不是非常的完整,但是已经可以解决大部分项目依赖冲突的问题。如果大家出现一些特殊的情况按照下面的方式无法解决,若需要完全解决的情况下,需要查看运行错误信息,以及项目依赖情况信息后再针对情况进行解决。

  1. 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
  1. node环境过高(18+),项目启动失败

    • 需在package.json中的scripts中添加一行代码,然后通过该命令npm run serve:old启动项目。添加内容:
      "serve:old": "set NODE_OPTIONS=--openssl-legacy-provider & npm run serve",
  2. 无论旧项目是否出现此问题,都可以按照此操作去进行调整。

以往问题出现:在安装依赖后@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有关)
  1. 当项目运行或打包过程中出现@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依赖。

  2. 若项目依赖中存在vue-class-decorator时将其删除(内部针对vue进行了依赖,将导致环境中vue版本不正确,存在多版本),并安装 @some21/vue-class-decorator
    a. 随后将项目中所有引用的 vue-class-decorator调整为 @some21/vue-class-decorator
    b. 安装@vue/composition-api到研发依赖当中。

  3. 若项目依赖中不存在vue-loader,安装 vue-loader@^15

  4. 若项目中同时使用了vxe-table并使用了babel-plugin-import 进行按需加载时,需要注意babel-plugin-import 的版本最好是固定或者小于1.13.6的版本,目前发现1.13.8的版本会导致vxe-table语法检测识别错误的情况。

  5. 对于旧项目,如果本地的cpnm>=v8以后的版本后,还原依赖无效或者失败,可以尝试还原指令cnpm i --by=npm --legacy-peer-deps进行还原,针对后续新的项目同样可以使用此指令。若并无此问题情况可以忽略(目前问题在vue/cli 的使用过程中发现)

如果以上操作完成以后,运行项目还是存在问题异常,欢迎留言反馈,若有需要可以进行协助,同时也会将缺少的部分加入到文档当中。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 升级Vue 2.项目Vue 3.需要注意以下几点: 1. Vue 3.使用了新的响应式系统,需要使用新的API来替代Vue 2.中的一些API,比如$watch和$set等。 2. Vue 3.中移除了一些不常用的API和选项,需要注意代码中是否使用了这些API和选项。 3. Vue 3.中使用了Composition API,需要学习新的API和使用方式。 4. Vue 3.中使用了新的模板编译器,需要使用新的编译器来编译模板。 5. Vue 3.中使用了新的组件注册方式,需要使用新的方式来注册组件。 总之,升级Vue 2.项目Vue 3.需要仔细阅读官方文档,学习新的API和使用方式,同需要对代码进行适当的修改和调整。 ### 回答2: 随着Vue 3.0的发布,许多Vue 2.0项目都想尝试升级到最新的版本以获得更好的开发体验和更快的性能。但是,Vue 3.0引入了一些重大的改变,因此升级可能需要一些准备和工作。以下是Vue 2.0项目升级Vue 3.0需要注意的几个方面: 1. 模板语法的变化: Vue 3.0放弃了类似于Vue 2.0中的"mustache"语法,并引入了基于函数的编译器,推出了一个新的template标签。需要重写模板和指令,例如:v-for需要以in标志定义,v-bind需要替换为:。 2. 数据响应式系统的变化: Vue 3.0引入了一个更加强大的响应式系统,其中包括reactive对象、ref对象和composition API等。在Vue 2.0中使用的data和computed属性需要做出一些调整,转换成reactive对象。 3. 生命周期钩子函数的变化: Vue 3.0与Vue 2.0相比生命周期钩子函数发生了一些变化,一些过的生命周期钩子函数已被删除,需要使用setup()、onMounted等新函数替代替换。 4. 组件API的变化: Vue 3.0中的组件API也发生了变化,例如$emit()改为emit()、$attrs、$listeners已被废弃等等。 5. TypeScript的支持: Vue 3.0引入了对TypeScript的更加完善的支持,组件和钩子函数等都可以使用TS类型的声明,为开发者提供了更好的开发体验。 6. 其他改变:Vue 3.0有一些其他改变,例如Composition API、Teleport、Fragment等,需要根据实际情况选择是否使用。 总结而言,Vue 2.0Vue 3.0的升级需要重新审视和修改整个项目,以适应更加快速和先进的Vue框架,但随之而来的是更大的弹性,更好的性能和更佳的类型支持。 ### 回答3: Vue 3.0 是 Vue.js 框架的最新版本,与 Vue 2.0 相比,Vue 3.0 做了大量的修改和改进,包括性能优化、API 改进、TypeScript 辅助改进等方面。在升级 Vue 2.0 项目Vue 3.0 的过程中,需要做一些必要的更改和优化。以下是一些需要注意的方面: 1. Vue 3.0 引入了新的 Composition API,是以函数为中心的 API,可用于更好地组织和重用代码。在升级过程中,需要将现有的基于 Options API 的代码转换为 Composition API。 2. Vue 3.0 与 Vue 2.0 的响应式原理有所不同。在 3.0 中,提供了 reactive 和 ref 两个 API,代替了 Vue 2.0 中的 data 和 computed。因此,升级需要重写组件中的数据响应式部分。 3. 在模板编译方面,Vue 3.0 改进了编译器,提升了模板编译的速度和效率。升级需要更新编译器或使用新的编译选项。 4. Vue 3.0 中删除了一些废弃的 API 和属性,升级需要将相关代码替换为新的 API 或属性。 5. 在性能方面,Vue 3.0 采用了模块化架构,提升了性能和可维护性。升级后,可以在性能方面获取更好的体验。 总之,在升级 Vue 2.0 项目Vue 3.0 ,需要重写部分代码,更新依赖项和插件,以及根据新的开发规范和最佳实践进行优化。在升级前,需要详细了解升级过程、了解新的 API 和变化、选择合适的工具和方法,确保升级过程顺利完成,并且不会对项目产生其他影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疋疋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值