Prettier保存时为何自动移除fetch请求中Authorization头的引号
1. 未加引号的Authorization键完全符合传参规范
很多人会误以为HTTP请求头作为对象键时必须加引号,实际上这个判断和请求头规则无关,只需要遵循JavaScript对象字面量的基础语法规则:
- JS对象的键名如果是合法标识符(组成字符仅包含字母、数字、下划线、$,不以数字开头,且不属于JS语法保留字),完全可以省略包裹键名的引号,加引号和不加引号的写法在语法上完全等价,运行时不会有任何行为差异。
Authorization符合合法标识符的全部要求,因此作为headers对象的键时不需要加引号,fetch会正常识别该请求头,不会出现传参错误。- 你提供的示例代码里反而存在两处语法问题:一是
method: POST中的POST未加引号,会被JS识别为变量而非请求方法字符串,正确写法应为method: 'POST';二是Content-type因为名称包含连字符-,不符合标识符命名规则,必须加引号,否则会直接触发语法报错,这也是Prettier不会移除该键引号的原因。
2. Prettier自动移除Authorization键引号是预期特性,不是Bug
Prettier是有强默认风格约束的代码格式化工具,核心目标就是消除代码中无意义的风格差异,它内置的默认格式化规则就包含「自动移除对象合法标识符键名上冗余的引号」这一项。
这个行为没有针对HTTP请求头做特殊判断,官方也没有提供对应的配置项来调整——因为这类引号本身就是不影响运行的冗余语法,移除后既不会改变代码逻辑,还能让代码风格更统一简洁,完全符合Prettier的设计逻辑。
格式化后可正常运行的完整代码参考:
fetch('your-request-url', { method: 'POST', headers: { Authorization: 'Bearer <your-access-token>', 'Content-Type': 'application/json' } })
内容的提问来源于stack exchange,提问作者Paeon
相关产品推荐
相关产品推荐

