Invalid Date

Next.js + NextAuth + Cloudflare Pages: Facebookログイン実装とデプロイの壮大なデバッグ記録

はじめに

このブログ記事は、Next.jsのApp Router、NextAuth.js、Prisma、そしてCloudflare Pagesを組み合わせたプロジェクトで、Facebookログイン機能を実装し、本番環境にデプロイするまでの、長く困難なデバッグの旅を記録したものです。一見シンプルな機能追加に見えましたが、環境間の差異、フレームワークの特性、そして外部サービスの複雑な設定が絡み合い、多岐にわたる問題に直面しました。

フェーズ1: Facebookログインの初期設定とNextAuthのエラー

課題1: Invalid Scopes: email エラー

課題2: TypeError: immutable (NextAuthコールバック)

課題3: Argument 'password' is missing (Prisma検証)

課題4: Unknown argument 'image' (Prisma検証)

フェーズ2: Cloudflare Pagesデプロイ時のTypeScript型エラー

ローカルでのFacebookログインが成功したものの、Cloudflare Pagesへのデプロイ時にTypeScriptの型エラーが多発。

課題1: staffNationalityの型不一致

課題2: currentUserプロパティの欠落

課題3: currentUserの型不一致 (詳細)

課題4: onFavoriteToggleSuccessプロパティの欠落

課題5: Event handlers cannot be passed to Client Component props

課題6: change-password APIの型エラー

フェーズ3: Cloudflare Pagesデプロイ時のランタイム/設定エラー

課題1: runtime = 'edge'設定の欠落

課題2: fs/promisespathモジュールが見つからない

課題3: 環境変数の設定漏れ

フェーズ4: デプロイ後のFacebookログインとUIの最終調整

課題1: OAuthAccountNotLinkedエラーメッセージの表示

課題2: URLの#_=_

課題3: 「お問い合わせ」ページの追加とナビゲーションリンク

結論

このプロジェクトは、Next.jsのApp Router、NextAuth.js、Prisma、Cloudflare Pagesといったモダンな技術スタックの導入における、一般的な落とし穴と解決策の宝庫となりました。特に、Server ComponentsとClient Components間のデータフロー、環境変数管理、外部サービス(Facebook、Cloudflare R2)との連携、そして多言語対応における細かな調整が重要であることを再認識させられました。

多くの課題を乗り越え、最終的にFacebookログイン機能は完全に動作し、ファイルアップロード機能もCloudflare Pagesの環境に最適化されました。この経験は、今後の開発における貴重な知見となるでしょう。


← Previous Entry: Next Entry:
← Back to Blog List