MeWrite Docs

Clerk: Session not found

Clerkで認証セッションが見つからない場合のエラー原因と解決策

概要

Clerk認証でセッションが見つからない、または無効な場合のエラーです。

エラーメッセージ

``` Error: Clerk: auth() was called but Clerk cannot find the session. ```

原因

  1. Middlewareの設定漏れ: ClerkMiddlewareが設定されていない
  2. publicRoutesの設定ミス: 認証不要のルートが設定されていない
  3. 環境変数の欠落: Clerkのキーが設定されていない
  4. Cookieの問題: サードパーティCookieのブロック

解決策

1. Middlewareを設定

```typescript // middleware.ts import { clerkMiddleware, createRouteMatcher } from ‘@clerk/nextjs/server’;

const isPublicRoute = createRouteMatcher([ ‘/’, ‘/sign-in(.)’, ‘/sign-up(.)’, ‘/api/public(.*)’, ]);

export default clerkMiddleware((auth, req) => { if (!isPublicRoute(req)) { auth().protect(); } });

export const config = { matcher: [’/((?!.\..|_next).)’, ‘/’, ‘/(api|trpc)(.)’], }; ```

2. 環境変数を設定

```bash

.env.local

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxx CLERK_SECRET_KEY=sk_test_xxx NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/dashboard NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/dashboard ```

3. ClerkProviderを設定

```typescript // app/layout.tsx import { ClerkProvider } from ‘@clerk/nextjs’;

export default function RootLayout({ children }) { return ( {children} ); } ```

4. サーバーコンポーネントでの認証確認

```typescript // app/dashboard/page.tsx import { auth, currentUser } from ‘@clerk/nextjs/server’; import { redirect } from ’next/navigation’;

export default async function DashboardPage() { const { userId } = auth();

if (!userId) { redirect(’/sign-in’); }

const user = await currentUser();

return Welcome, {user?.firstName}; } ```

5. APIルートでの認証

```typescript // app/api/user/route.ts import { auth } from ‘@clerk/nextjs/server’; import { NextResponse } from ’next/server’;

export async function GET() { const { userId } = auth();

if (!userId) { return NextResponse.json({ error: ‘Unauthorized’ }, { status: 401 }); }

// 処理を続行 } ```

よくある間違い

  • middleware.tsの配置場所(appディレクトリではなくルート)
  • matcherパターンの誤り
  • NEXT_PUBLIC_プレフィックスの欠落

関連エラー

関連エラー

Authentication の他のエラー

最終更新: 2025-12-11