为啥我会收到“错误:序列化从 getStaticProps 返回的 ___ 时出错”?

Posted

技术标签:

【中文标题】为啥我会收到“错误:序列化从 getStaticProps 返回的 ___ 时出错”?【英文标题】:Why am I getting 'Error: Error serializing ___ returned from getStaticProps'?为什么我会收到“错误:序列化从 getStaticProps 返回的 ___ 时出错”? 【发布时间】:2021-04-23 02:23:06 【问题描述】:

当我在getStaticProps 内部调用时收到以下错误,我不知道为什么:

Error: Error serializing `.lingo` returned from `getStaticProps` in "/".
Reason: `undefined` cannot be serialized as JSON.

我已将完整的应用代码放在CodeSandbox 上。它无法访问 API,但它确实显示了定义的位置。

当我在 GraphQL 操场上运行以下查询时,我得到了预期的响应:

query 
   allTerms 
      id
      term
      slug
      lead
   

您可以看到该查询包含在沙盒的modules/lingo/services 目录下的lingo.service.js 中,但主页出现Error serializing 错误。我的函数export async function getAll() 不正确还是我在getStaticProps 中调用错误?

【问题讨论】:

任何时候您在错误消息中看到cannot ____ undefined 或类似内容,这是因为您的变量之一在不应该等于未定义时。 【参考方案1】:

await getAll() 很可能返回 undefined,它不是可序列化的 JSON。默认为null 将是解决问题的一种方法。

export async function getStaticProps(context) 
  return 
    props:  lingo: (await getAll()) ?? null ,
  ;

【讨论】:

谢谢。 null 不会返回任何东西吗?有需要响应的项目​​,当在 GraphQL Playground 中查询时它们会得到响应。另一个问题是 lingo.length 现在返回 null 并导致 TypeError: Cannot read property 'length' of null 错误。 您需要围绕它调整您的代码,可能是null。例如,在访问 lingo.length 之前添加额外的检查。或者当它为 null 时甚至根本不渲染某些组件。

以上是关于为啥我会收到“错误:序列化从 getStaticProps 返回的 ___ 时出错”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到此错误

为啥我会收到这个 TypeError?

为啥我会收到序列化错误?

为啥我会收到错误消息?

知道为啥我会收到此错误吗?

为啥我会收到这种错误验证错误?