標題重寫為:Uncertain if Nextjs is detecting _app.js; Error: useSession must be wrapped in a
P粉771233336
P粉771233336 2023-09-04 00:10:21
0
1
516

我一直在關註一些關於 Nextjs、Prisma 和 Auth0 的教程。我的問題是,在嘗試在標題上建立登入/登出按鈕後(透過將import { useSession,signIn,signOut } 從「next-auth/react」 新增到 header.js 檔案),下一步.js 出現以下錯誤Error: [next-auth]: \`useSession\` 必須包裝在\ 中。我嘗試在根資料夾中創建_app.js 文件,然後在/pages/_app.js 處創建,最後在/app/_app 處創建,最後在/app/_app .js 處創建。這些都不起作用。

這是my_app.js檔案的內容:

import { SessionProvider } from "next-auth/react" export default function App({ Component, pageProps: { session, ...pageProps }, }) { return (    ) }

如何確保 Next 正在檢測並使用它?我認為該文件在某種程度上被忽略了。

我嘗試將_app.js 檔案的位置從專案的根資料夾更改為/pages/_app.js ,最後更改為 ;app/_app.js 。我還嘗試刪除 .next 資料夾並重新運行伺服器,但它不起作用。

更新 1: 我正在使用的 Next.js 版本:v13.4.4

更新 2: 我已將 console.log() 函數新增至 _app.js 檔案中,並將其列印到終端,但不在 Firefox 上。 _app.js 檢測正常還是有問題?

我(有點)修復了它!檢查下面我的答案。但部署到 Vercel 時它不起作用。

P粉771233336
P粉771233336

全部回覆 (1)
P粉966979765

我想我已經解決了這個問題,我決定忘記 _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 (   {children}   ) }

重要部分:如果您使用'use client'選項,Next將不允許您匯出元數據,因此您需要刪除從程式碼中匯出const 元數據= {...。

更新:由於某種原因,它無法在 Vercel 上運行(即使它在本地運行)。我會嘗試修復它,然後更新我的答案。TL;DR:此解決方案在本機上運行,但部署到 Vercel 時不起作用。

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!