Javascript (“对象承诺”)不能序列化为JSON
完全错误: 错误:序列化从“/”中的Javascript (“对象承诺”)不能序列化为JSON,javascript,reactjs,http,fetch,Javascript,Reactjs,Http,Fetch,完全错误: 错误:序列化从“/”中的getStaticProps返回的.b时出错。 原因:object(“[object Promise]”)无法序列化为JSON。 请仅返回JSON可序列化的数据类型 我试图调用我的一个函数,该函数从API端点检索一些数据,但是当试图将这些数据传递给props时,我得到了一个错误。我不太确定我做错了什么,因为如果fetch调用在GetStaticProps中有效,但我希望我所有的fetch调用逻辑都存在于一个单独的js页面中,以减少冗余,但是这样做时会产生此错误
getStaticProps
返回的.b
时出错。
原因:object
(“[object Promise]”)无法序列化为JSON。
请仅返回JSON可序列化的数据类型
我试图调用我的一个函数,该函数从API端点检索一些数据,但是当试图将这些数据传递给props时,我得到了一个错误。我不太确定我做错了什么,因为如果fetch调用在GetStaticProps中有效,但我希望我所有的fetch调用逻辑都存在于一个单独的js页面中,以减少冗余,但是这样做时会产生此错误
export async function getStaticProps() {
let b = WordpressService.getPageByIdTest(50);
return {
props: {
b: b,
},
revalidate: 30
}
}
我正在浏览最新版本的nextjs,我确实注意到,当我运行它时,演示是很奇怪的。具体来说,我在运行他们的示例时遇到了以下错误: 错误:从
getStaticProps
返回了其他键。性质
适用于您的组件必须嵌套在props
键下,例如
这不完全是您的问题,但是通过res.json()分配props对象也会导致您遇到相同的错误
因此,对于我来说,使用节点15,我将api调用更改为:
export async function getStaticProps() {
const url = `https://my-url`
const result = await fetch(url)
return { props: {
result: await result.json()
}}
}
这就解决了我的问题。因此,Ivar的评论看起来是正确的——等待结果,然后在我的例子中,我还必须等待node fetch的json结果,以便承诺正确完成。
等待WordpressService.getPageByIdTest(50)代码>?
export async function getSortedPostsData() {
// Instead of the file system,
// fetch post data from an external API endpoint
const res = await fetch('..')
return res.json()
}
export async function getStaticProps() {
const url = `https://my-url`
const result = await fetch(url)
return { props: {
result: await result.json()
}}
}