P粉9669797652023-09-04 23:19:18
我想我已经解决了这个问题,我决定忘记 _app.js 并将所有内容都放在我的自定义 layout.js 文件中。我仍然需要测试用户是否会保持登录状态,因为 header.js 位于 layout.js 之外。
我是如何解决的:我添加了
'use client' import { SessionProvider } from "next-auth/react";
到layout.js
(默认情况下Next.js附带的文件)并在正在“导出”的函数的参数中传递会话(导出默认函数RootLayout)。然后我用 包裹了所有的 return() 参数。
这是部分代码:
export default function RootLayout({ children, session }) { return ( <html lang="en"> <SessionProvider session={session}> <body>{children}</body> </SessionProvider> </html> ) }
重要部分:如果您使用'use client'
选项,Next将不允许您导出元数据,因此您需要删除< code>从代码中导出 const 元数据 = {...。
更新:由于某种原因,它无法在 Vercel 上运行(即使它在本地运行)。我会尝试修复它,然后更新我的答案。 TL;DR:此解决方案在本地运行,但在部署到 Vercel 时不起作用。