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 時不起作用。