在 getStaticProps 函数中序列化 Next.js 时出错?

Posted

技术标签:

【中文标题】在 getStaticProps 函数中序列化 Next.js 时出错?【英文标题】:Error serializing Next.js in getStaticProps function? 【发布时间】:2021-06-19 22:25:55 【问题描述】:

我正在使用getStaticProps() 函数,但我无缘无故地收到此错误:

错误:序列化从 getStaticProps 返回的 .posts[0] 时出错 “/”。原因:object("[object Object]") 无法序列化为 JSON。请仅返回 JSON 可序列化数据类型。

我也在使用 mongoDb 数据库,connectDb() 函数运行mongoose.connect() 函数并连接到数据库。另外,console.log()s 返回有效的 JSON 格式数据,我不知道是什么导致了这个问题,这是我的代码:

export const getStaticProps: GetStaticProps = async (
  context: GetStaticPropsContext
) => 
  await connectDb()
  const count = await PostModel.countDocuments()
  const posts = await PostModel.find()
  console.log(posts)
  console.log(count)
  return 
    props:  posts: posts, count: count ,
    revalidate: 10,
  

【问题讨论】:

【参考方案1】:

使用lean 它将转换为纯 javascript 对象。

const posts = await PostModel.find().lean();

或者你可以通过.toJSON尝试序列化

【讨论】:

以上是关于在 getStaticProps 函数中序列化 Next.js 时出错?的主要内容,如果未能解决你的问题,请参考以下文章

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

错误:如何从 getStaticProps 序列化数据:Next.js

如何干净地处理 nextjs getStaticProps 中的错误

如何从 getstaticprops 函数中的 Context API 获取数据?

我可以在 getStaticProps 中使用 UseEffect 挂钩吗?

NextJS:通过上下文将字符串从输入传递到 getStaticProps