vue2.6 和 2.7对可选链的不同支持导致构建失败

有两个Vue2项目,一个可在template模板用可选链,另一个报错,且报错项目在同事处正常。排查发现与node版本无关,vue2.6需babel编译支持可选链,怀疑是vue版本差异导致。重新安装依赖后问题解决,推测是包依赖及删除lock文件影响了vue版本。

有两个vue2项目,构建配置和依赖基本上都一样,但一个可以在 template 模板中使用可选链(?.),另一个使用就报错。

但是报错的那个项目,在另一个同事那又不报错。

已知 node14 之后就支持可选链了,我和同事用的是 node14和node16,所以和node版本也没关系。

已知 vue2.6 不支持可选链,但可以通过 babel 编译:需要安装@babel/preset-env@babel/plugin-proposal-optional-chaining插件,而我并没有安装这个插件。

后来查看 package-lock.json 发现,其中支持可选链的项目中 vue 的版本已经变成 2.7.x 了,而另一个不支持的项目中 vue 版本还是 2.6.x

已知 vue2.7 是支持可选链的,所以我怀疑是这个原因导致产生了现在的区别。

于是删掉 node_modulespageage-lock.json重新全部安装一遍依赖,果然 vue 版本变成了 2.7.x,再次运行,项目也支持可选链了。

个人推断,vue 的版本在项目迭代的过程中升级成 2.7 的原因可能是:

  1. @vue/babel-preset-app 包依赖的 vue 版本指定的是 ^2,所以在未安装vue时安装这个依赖,会自动安装 vue2的最新版本。
    在这里插入图片描述
  2. 有人在初始安装依赖的时候,删除了 package-lock.json 文件,导致无法限制 vue 的版本。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值