Juj*_*ujV 5 typescript next.js getserversideprops next-auth
我在 next.js 中使用 getServerSideProps 函数和 Next-Auth ,但出现 TypeError:
TypeError: Cannot destructure property 'nextauth' of 'req.query' as it is undefined.
Run Code Online (Sandbox Code Playgroud)
当我使用控制台检查时,它确实返回未定义。
我一直在关注 NextAuth.js 的官方文档:https ://next-auth.js.org/configuration/nextjs#getserversession
我的功能:
export const getServerSideProps = async (context: { req: NextApiRequest; res: NextApiResponse<any>; }) => {
const session = await getServerSession(context.req, context.res, authOptions)
if (!session) {
return {
redirect: {
destination: '/',
permanent: false
}
}
}
return {
props: {
session,
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我做:
const {req: query} = context
console.log(query == undefined)
Run Code Online (Sandbox Code Playgroud)
控制台返回 false,但 TypeError 仍然存在。
当我更改此函数的 props 时,我收到不同的错误:
export const getServerSideProps = async (req: NextApiRequest, res: NextApiResponse<any>) => {
const session = await getServerSession(req, res, authOptions)
if (!session) {
return {
redirect: {
destination: '/',
permanent: false
}
}
}
return {
props: {
session,
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么错误是:
My _App: TypeError: Cannot read properties of undefined (reading 'x-forwarded-host')
export default function App({
Component, pageProps: { session, ...pageProps}}: AppProps, {emotionCache = clientSideEmotionCache,}){
return (
<SessionProvider session={pageProps.session}>
<CacheProvider value={emotionCache}>
<ThemeProvider theme={lightTheme}>
<CssBaseline />
<Component {...pageProps} />
</ThemeProvider>
</CacheProvider>
</SessionProvider>
);
};
Run Code Online (Sandbox Code Playgroud)
关于下一步该做什么有什么建议吗?
我不确定你是否设法解决了这个问题(如果你做到了,请告诉我!),但我面临着我认为与你的问题完全相同的问题,即使是在 GitHub 上提出了问题关于它。我会让您知道返回的内容,但可能值得考虑的一件事是您正在运行的 NextAuth 版本。
| 归档时间: |
|
| 查看次数: |
2735 次 |
| 最近记录: |