I'm currently implementing user authentication on my website, and I'm trying to restrict access to the login and signup pages if the user is logged in. To do so, I am implementing this getServerSideProps
to redirect the user if they're logged in:
export async function getServerSideProps(context) {
if (context.req.cookies.user) {
return {
redirect: {
destination: '/',
permanent: true,
},
}
}
return {}
}
If I return an empty object ({}
), next gives me this error:
Reason: Props must be returned as a plain object from getServerSideProps: `{ props: { ... } }` (received: `[object Array]`).
If instead of returning {}
, I return
{
props: {}
}
the code works all right. Does anyone know why this is happening?
I'm using a custom _app.jsx
file.
In the documentation, it's clearly mentioned that the props argument is optional:
This is actually intended. If you were using TypeScript, return {}
would have thrown you error as GetServerSidePropsResult
is defined like this here:
export type GetServerSidePropsResult<P> =
| { props: P | Promise<P> }
| { redirect: Redirect }
| { notFound: true }
It means that any one of props
, redirect
, notFound
needs to be present in the returned object. Perhaps you can create an issue at their GitHub (and maybe a PR) to fix the documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With