SyntaxError:意外的标记
错误信息
Unexpected token 'x'
快速摘要
代码里某个位置的符号不符合 JS 语法——可能是少了个括号、多了个逗号,或 JSX/JSON 里用了单引号。
为什么发生
括号、引号或花括号未配对,解析器在后续位置遇到意外符号
JSON 里用了单引号或带尾逗号,JSON 只允许双引号且不能有尾逗号
JSX 写法在没配置 Babel 的
.js文件里使用异步函数漏写
async关键字却用了await
最小示例
✗ 错误代码
const arr = [1, 2 3];✓ 修复代码
const arr = [1, 2, 3];2 和 3 之间少了一个逗号——解析器在期待逗号或右括号的位置遇到了 3,于是抛出 SyntaxError。补上逗号即可。
如何诊断
阅读错误信息,记下意外的标记和它的行号、列号
检查该位置以及前几行的括号、引号是否配对
如果是 JSON,确认用了双引号、无尾逗号
如何修复
补上缺失的括号、引号或分号
把 JSON 里的单引号改成双引号,去掉尾逗号
在含 JSX 的文件里使用
.jsx扩展名或配置 Babel
如何预防
使用带语法高亮和括号匹配的编辑器
启用 ESLint 和 Prettier 自动捕获格式问题
相关资源
相关课程
- JavaScript 概览
了解 JS 语法基础
相关练习
- 找出箭头函数错误
练习找出函数中的语法错误。
相关工具
- JSON 格式化工具
格式化和验证 JSON,捕获语法错误。
- JSON 验证器
验证 JSON 语法,发现意外标记。