Prettier格式化时为什么会在[myVariable]变量前自动添加分号?
原因说明
Prettier在以[开头的代码行前自动添加前置分号是预设的安全特性,用于规避JS自动分号插入(ASI)的隐性bug:如果上一行代码末尾没有分号,JS解析器会把下一行开头的[识别为上一行的属性访问操作,导致代码逻辑完全错误。你遇到的报错不是Prettier的问题,本质是项目中ESLint等代码校验规则与Prettier的格式化配置冲突导致的。
解决方案
- 方案1:对齐规则(推荐)
如果项目采用全分号代码规范:将ESLint的semi规则配置为["error", "always"],同时安装eslint-config-prettier关闭所有和Prettier冲突的ESLint规则即可解决报错。
如果项目采用无分号代码规范:直接在Prettier配置文件中添加semi: false配置项,Prettier会统一遵循无分号逻辑格式化,不会自动添加这类前置分号。 - 方案2:调整代码绕过触发条件
不想改动全局配置的情况下,可以把数组解构赋值改成普通索引取值的写法,避免行首出现[字符即可:if (!article && app.$config.NODE_ENV !== 'development') { const entries = await app.$contentful.getEntries({ content_type: 'content', 'fields.route': params.id, options: { levels: 3 }, }) article = entries[0] }
内容的提问来源于stack exchange,提问作者Ayoub
相关产品推荐
相关产品推荐

