【vue-cli】使用es6的可选链?.操作符报错Module parse failed解决记录

本文介绍了在Vue项目中遇到的旧代码因多层调用对象属性导致的错误,以及如何通过引入ES6的可选链操作符?.来避免这种问题。在发现Vue-cli项目不支持?.语法后,通过对比不同版本的@vue/cli-plugin-babel,发现版本过低是原因。升级到4.0.0以上版本,并清理并重新安装依赖后,?.语法成功运行。文章还详细解释了语义版本控制的规则,并提供了查看npm包所有版本的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用场景:发现项目有些旧代码多层调用某个对象的属性,由于目标对象可能没那个属性,就导致报错,之前研究es6新特性时发现可以用?.来判断某个对象是否有某个属性来赋值。

测试源代码:

var a = {
  name: 'hello'
}
var b = a?.name;

console.log('a',a,'b',b)

在vue-cli中发现用不了:
在这里插入图片描述

后面尝试去解决,成功后浏览器控制台能打印出来
在这里插入图片描述

解决过程

因为我们这个项目是用的vue-element-admin,我自己在另外一个vue-cli工程发现?.语法是可以用的,所以研究了一下为什么目前项目用不了,对比了一下package.json里的依赖,发现 “@vue/cli-plugin-babel”: “3.5.3”,而另外可用该语法的项目里是:"@vue/cli-plugin-babel": “~4.5.0”

所以我把升级了该依赖,不用写死的3.5.3版本了,写成 "@vue/cli-plugin-babel": "^4.0.0"后,删除了node_modules文件夹,使用淘宝镜像cnpm install命令重新安装了node_module依赖后,?.语法成功了

并看到我的测试源代码编译为es5后的源代码是:
在这里插入图片描述

关于版本补充:

鉴于使用了 semver(语义版本控制),所有的版本都有 3 个数字,第1个是主版本,第2个是次版本,第3个是补丁版本,具有以下规则:

~: 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
^: 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
*: 如果写入的是 *,则表示接受所有的更新,包括主版本升级。
>: 接受高于指定版本的任何版本。
>=: 接受等于或高于指定版本的任何版本。
<=: 接受等于或低于指定版本的任何版本。
<: 接受低于指定版本的任何版本。

还有其他的规则:
无符号: 仅接受指定的特定版本。
latest: 使用可用的最新版本。

npm view 依赖包 versions: 查看依赖包的所有版本

如:

npm view @vue/cli-plugin-babel versions 就是看 @vue/cli-plugin-babel 的所有版本

更多参考:
MDN可选链操作符?.

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值