为什么@babel/parser解析对象时报Missing semicolon错误?
错误含义
Missing semicolon. (3:9) 表示解析器在代码第3行第9列的位置,预期需要匹配一个分号作为语句结束标识,但实际没有找到对应的分号。
是否为@babel/parser无法正确解析对象?
不是,这个报错是JavaScript本身的语法规则导致的,和解析器能力无关:
- 当代码直接以
{作为开头时,JavaScript解析器会默认将其识别为块级作用域语句,而非对象字面量 - 你写的代码里的
name: 'test'会被判定为带标签的表达式语句:name是语句标签,'test'是单独的字符串表达式,这种写法本身语法合法 - 到第3行
}之前,解析器判定前一行的company: 'test company'作为独立语句应该以分号收尾,因此抛出缺少分号的错误
解决方案
只要明确告知解析器这是对象字面量即可,常见的写法有两种:
- 将对象赋值给变量:
const obj = { name: 'test', company: 'test company', }
- 用括号包裹对象,强制让解析器将内容识别为表达式:
({ name: 'test', company: 'test company', })
内容的提问来源于stack exchange,提问作者oxygen
相关产品推荐
相关产品推荐

