我目前正在我的网站上实现用户身份验证,如果用户已登录,我正在尝试限制对登录和注册页面的访问。为此,我正在实现 getServerSideProps
如果用户已登录,则重定向用户:
export async function getServerSideProps(context) {
if (context.req.cookies.user) {
return {
redirect: {
destination: '/',
permanent: true,
},
}
}
return {}
}
如果我返回一个空对象( {}
),接下来会给我这个错误:Reason: Props must be returned as a plain object from getServerSideProps: `{ props: { ... } }` (received: `[object Array]`).
如果不是返回 {}
, 我回来{
props: {}
}
该代码工作正常。有谁知道为什么会这样?我正在使用自定义
_app.jsx
文件。在文档中,明确提到 props 参数是可选的:
最佳答案
这实际上是有意的。如果您使用的是 TypeScript,return {}
会抛出你的错误 GetServerSidePropsResult
定义如下 here :
export type GetServerSidePropsResult<P> =
| { props: P | Promise<P> }
| { redirect: Redirect }
| { notFound: true }
这意味着 props
中的任何一个, redirect
, notFound
需要存在于返回的对象中。也许您可以在他们的 GitHub 上创建问题。 (也许是 PR)来修复文档。
关于javascript - props 作为字符串而不是对象返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70823052/