Next.js动态路由报错:SyntaxError: Unexpected token < in JSON at position 0
解决Next.js动态路由中的SyntaxError: Unexpected token < in JSON at position 0错误
这个错误的核心原因是:你代码里在解析JSON,但实际拿到的是HTML内容(比如404页面、服务器报错页面),HTML以<开头,导致JSON解析器直接报错。结合动态路由场景,按以下步骤排查:
- 打开浏览器控制台的Network面板,找到你获取数据的请求,查看Response内容,确认是不是HTML(比如404页面、服务器错误页面)。
- 检查动态路由文件名是否符合Next.js规则:必须是
[参数名].js/ts格式,比如[id].js,别写错文件名。 - 核对数据获取逻辑(比如
getStaticProps/getServerSideProps里的请求):- 请求的URL有没有拼错动态参数?比如要请求
/api/posts/123,别写成/api/posts导致返回404 HTML。 - 如果调用的是自己的API路由,检查该路由文件是否正常返回JSON,有没有内部报错返回了HTML。
- 请求的URL有没有拼错动态参数?比如要请求
- 临时在代码里打印实际返回的内容:比如在fetch后加一行
console.log(await response.text()),就能看到到底拿到的是啥,快速定位问题。
内容的提问来源于stack exchange,提问作者Chandramouli
相关产品推荐
相关产品推荐

