繁体   English   中英

getServerSideProps 函数响应无法序列化为 Next.js 中的 JSON

[英]getServerSideProps functions response cannot be serialized as JSON in Next.js

我正在构建一个具有动态路由的多个页面的 Next.js 应用程序。 每个页面都有多个对后端的 axios 调用,这些调用使用 useEffect 调用。 我的目标是使用 getServerSideProps 函数来调用这些函数,以提高应用程序的速度,以适应更大的用户数据库。

我的问题是当我尝试从数据库接收电子邮件时,出现错误:

错误:从“/emails”中的 getServerSideProps 返回的错误 serializing.allEmails.config.transformRequest[0]。 原因:function不能序列化为JSON。 请仅返回 JSON 可序列化数据类型。

我想接收电子邮件并将其传递给道具,然后我可以访问页面上的数据。

 import React, { useState, useEffect, useContext } from 'react'; import axios from 'axios'; import jsHttpCookie from 'cookie'; import jsCookie from 'js-cookie'; const Emails = ({allEmails}) => { const [emails, setEmails] = useState(allEmails); return ( <></> ) } export async function getServerSideProps({req, res}) { const {token} = jsHttpCookie.parse(req.headers.cookie); const allEmails = await axios.get("http://localhost:8000/api/allCompanyEmails"); console.log(allEmails, "all data") return { props: { allEmails } } } export default Emails;

allEmails实际上是AxiosResponse类型,它不是您从 api 获得的数据。 它包含不可序列化的东西,如函数等。

要获取您需要访问此响应的data属性的数据:

export async function getServerSideProps({req, res}) {
    const {token} = jsHttpCookie.parse(req.headers.cookie);
    const response = await axios.get("http://localhost:8000/api/allCompanyEmails");
    console.log(response, "all data")
  
    return {
        props: {
          allEmails: response.data
        }
    }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM