4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2023년 4월 24일 13:56 #78857
대영참가자선요약:
클라이언트 컴포넌트에서 let session = useSession();는 잘되지만
서버 컴포넌트에서 let session = await getServerSession(authOptions) 가 전혀 안됨
import Image from 'next/image' import styles from '@/styles/Home.module.css' import { useEffect, useState } from 'react' import axios from 'axios'
import { getServerSession } from 'next-auth' import { authOptions } from "@/pages/api/auth/[...nextauth]"
export const getServerSideProps = (req:any)=> { let session = getServerSession(authOptions) console.log(session) return {props:{session:'babo'}} } export default function Home(props:any) { console.log(props) return ( <> <main className={styles.main}>
</main> </> ) }
위 파일은 project/pages/index.tsx 입니다. 강의대로 마냥 따라 치는 것보다는, 좀 다르게 해보면서 구현해보고 있습니다. 아시다시피 getServerSideProps는 서버컴포넌트라서, getServerSession(authOptions)가 실행되어야 합니다. 하지만 서버 콘솔에 아래와 같은 에러가 나옵니다.
error - unhandledRejection: Error: Invariant: Method expects to have requestAsyncStorage, none available at headers (C:\Users258\Desktop\works\study_next-apple\node_modules\next\dist\client\components\headers.js:33:15) at getServerSession (C:\Users258\Desktop\works\study_next-apple\node_modules\next-auth\next\index.js:144:35) at getServerSideProps (webpack-internal:///./pages/index.tsx:18:78)
혹시 async await가 문제인가 싶어
export const getServerSideProps = async(req:any)=> { let session = await getServerSession(authOptions) console.log(session) return {props:{session:'babo'}} }
이렇게도 바꿔봤지만, 에러는 그대로입니다.
그렇다면 [...nextauth].tsx가 문제일 수도 있는데,
이는 문제가 아닌 것이
const [isLogin,setIsLogin] = useState(false) let session = useSession();
useEffect(()=>{ if (session.status === 'authenticated') { console.log(session) setIsLogin(true) } else { setIsLogin(false) } },[session])
github 로그인을 하고나서 위 코드가 실행되면 정상적으로 status:authenticated가 찍히기 때문에
[...nextauth].tsx는 정상으로 판단 됩니다. (코드는 강의에 올리신걸 그대로 올림)
gpt한테 물어보고 온갖 조치를 다 해봤는데도 도저히 안되는데 혹시 뭐가 문제일까요?
2023년 4월 24일 22:23 #79000
대영참가자물론 그 코드는 됩니다. 인자를 3개 넣으면요... [회원기능 만들기 : Auth.js 사용한 소셜로그인] 이 강의에 아래와 같은 코드가 있습니다... 다음 강의 보기전에 삽질 엄청 많이 했어요....ㅠㅠ 아래 예시 코드...작동 되는거 맞나요...?
import { authOptions } from "@/pages/api/auth/[...nextauth].js" import { getServerSession } from "next-auth"
export default function Page(){ let session = await getServerSession(authOptions) if (session) { console.log(session) } 라고 적혀있습니다..
2023년 4월 25일 09:05 #79053
codingapple키 마스터getServerSideProps안에서는 인자3개 넣어서 씁시다 잘될걸요 import할때 from "next-auth/next" 해야할수도요
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.