ホームページ  >  に質問  >  本文

タイトルは次のように書き換えられます: Nextjs が _app.js を検出しているかどうかは不明; エラー: useSession は <SessionProvider /> でラップする必要があります

<p>私は Nextjs、Prisma、Auth0 に関するいくつかのチュートリアルに従ってきました。私の問題は、ヘッダーにログイン/ログアウトボタンを作成しようとした後です(「next-auth/react」</code>から<code>ヘッダーに<code>import { useSession,signIn,signOut} を追加することによって) .js</code> ファイル) を使用すると、 next.js<code>Error: [next-auth]: \`useSession\` を \<SessionProvider /></code> でラップする必要があります。 <code>_app.js</code> ファイルをルート フォルダーに作成し、次に <code>/pages/_app.js</code>、最後に <code>/app/_app に作成してみました。 .js</code>。これらはどれも機能しません。 </p> <p>これは私の<code>_app.jsファイルの内容です: </code></p> <pre class="brush:php;toolbar:false;">import { SessionProvider } from "next-auth/react" デフォルト関数をエクスポート App({ 成分、 pageProps: { セッション, ...pageProps }, }) { 戻る ( <セッションプロバイダー session={session}> <コンポーネント {...pageProps} /> </セッションプロバイダー> ) }</pre> <p>Next がそれを検出して使用していることを確認するにはどうすればよいですか?ファイルはある程度無視されていると思います。 </p> <p><code>_app.js</code> ファイルの場所をプロジェクトのルート フォルダーから <code>/pages/_app.js</code> に変更してみました。そして最後に <コード> ;app/_app.js</code> 。また、<code>.next</code> フォルダーを削除してサーバーを再実行してみましたが、うまくいきませんでした。 </p> <p><strong>アップデート 1: </strong> 私が使用している Next.js バージョン: v13.4.4</p> <p><strong>アップデート 2: </strong> <code>console.log()</code> 関数を <code>_app.js</code> ファイルに追加すると、ターミナルには出力されますが、Firefox には出力されません。 <code>_app.js</code> 検出は正常ですか、それとも問題がありますか? </p> <p><strong>(ある意味)修正しました!以下の私の答えを確認してください。ただし、Vercel にデプロイすると機能しません。 </strong></p>
P粉771233336P粉771233336433日前604

全員に返信(1)返信します

  • P粉966979765

    P粉9669797652023-09-04 23:19:18

    この問題は解決したと思います。_app.js のことは忘れて、すべてをカスタムのlayout.js ファイルに入れることにしました。 header.js はlayout.js の外部にあるため、ユーザーがログインしたままになるかどうかをテストする必要があります。

    私がそれを解決した方法:

    を追加しました リーリー

    layout.js (デフォルトで Next.js に付属するファイル) に移動し、「エクスポート」される関数のパラメーターにセッションを渡します (デフォルト関数 RootLayout がエクスポートされます)。次に、すべての return() パラメータを でラップしました。

    これはコードの一部です:

    リーリー

    重要な部分: 'use client' オプションを使用すると、Next ではメタデータをエクスポートできなくなるため、< code>export const メタデータをコード = {...。

    UPDATE: 何らかの理由で、Vercel では動作しません (ローカルでは動作しますが)。それを修正して回答を更新してみます。 TL;DR: このソリューションはローカルでは機能しますが、Vercel にデプロイすると機能しません。

    返事
    0
  • キャンセル返事