[英]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.