• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Next.js 게시판 getServerSession(authOptions) 에러 문제

getServerSession(authOptions) 에러 문제

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #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한테 물어보고 온갖 조치를 다 해봤는데도 도저히 안되는데
    혹시 뭐가 문제일까요?
    
    
    
    
     
    #78951

    codingapple
    키 마스터
    await getServerSession(요청, 응답, authOptions) 해야합니다
    #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)
      }
    라고 적혀있습니다..
     
     
     
     
     
     
     
     
     
     
    #79053

    codingapple
    키 마스터
    getServerSideProps안에서는 인자3개 넣어서 씁시다 
    잘될걸요 import할때 from "next-auth/next" 해야할수도요 
    
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠