← 中文资源

简体中文版本

Node.js 启动时抛出 SyntaxError: Unexpected token

通过阅读报错位置并把文件从构建产物中隔离定位,快速找到语法错误。

阅读英文原文

症状

Node 报 SyntaxError: Unexpected token 并给出位置或不该出现的记号,而该文件在解析更宽松的工具里可能运行正常。当消息是 Unexpected token < in JSON at position 0 时,解析器几乎肯定收到的是 HTML 页面而非 JSON,常见于带认证的接口返回了登录页。

诊断

用 –stack-trace-limit 读取完整堆栈定位文件行;对 JSON 场景单独用 JSON.parse 验证;怀疑产物过期时从干净目录重新构建。

node --stack-trace-limit=20 file.js

根因

运行时在报错位置解析了并非合法 JavaScript 或 JSON 的文本,原因是源码有语法错误,或把非代码内容当作代码解析。

修复

修正源码语法;解析前先校验 JSON;重新构建使产物与源码一致。对 Unexpected token < 应把响应当作错误页而非数据。

验证

再次运行确认文件可加载,并对真实数据重新解析确认内容合法。两者兼备说明解析路径健康。

常见陷阱

仅靠编辑器高亮不能替代运行时校验;构建产物过期造成的错误需通过干净重建排除。