You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js执行简单数据请求时出现JSON解析错误求助

解决SyntaxError: "undefined" is not valid JSON错误及数据请求问题

问题根源

你调用dummyjson接口时触发的错误,核心原因有两点:

  • fetch异步处理错误:res.json()返回Promise对象,直接打印无法获取实际JSON数据;同时async函数内混用await与then,未正确处理异步流程。
  • 根布局组件缺失导入:RootLayout中未导入Main组件,导致服务器端渲染时尝试解析未定义的组件内容,触发"undefined"不是有效JSON的错误。

修正后的代码

Main组件(客户端组件)

"use client";
import React, { useEffect } from "react";

export default function Main() {
  useEffect(() => {
    const fetchTodos = async () => {
      try {
        // 等待请求响应
        const res = await fetch("https://dummyjson.com/products/1");
        // 校验响应状态
        if (!res.ok) throw new Error(`请求失败:${res.status}`);
        // 等待JSON解析完成
        const data = await res.json();
        // 打印实际返回数据
        console.log(data);
      } catch (error) {
        // 捕获并输出错误信息
        console.error("请求出错:", error);
      }
    };

    fetchTodos();
  }, []);

  return <div>Fetch Dummy</div>;
}

layout.jsx(根布局组件)

// 根据实际文件路径导入Main组件
import Main from './Main';

export default function RootLayout() {
  return (
    <html lang="en">
      <head>
        <title>Digital</title>
      </head>
      <body>
        <Main />
      </body>
    </html>
  );
}

关键修正说明

  • 用await链式处理请求与JSON解析,确保获取到实际数据而非Promise对象。
  • 添加错误捕获逻辑,便于快速排查请求失败原因。
  • 在RootLayout中补全Main组件的导入,避免服务器端渲染时出现未定义内容。

内容的提问来源于stack exchange,提问作者Captai-N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:53:26