Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (“对象承诺”)不能序列化为JSON_Javascript_Reactjs_Http_Fetch - Fatal编程技术网

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()
    }}
}