강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của alkjfslkn
alkjfslkn

câu hỏi đã được viết

Chuỗi bài học về Node và React để học bằng cách làm theo - Tạo trang Reddit (NextJS) (Bộ định tuyến trang)

쿠키 저장이 되지 않습니다.

Viết

·

201

·

Đã chỉnh sửa

0

auth.ts에서

     //비번이 맞으면 토큰 생성
        const token = jwt.sign({username}, process.env.JWT_SECRET)
        console.log(token)
        //쿠키 저장
        res.set("Set-Cookie", cookie.serialize('token', token));

        return res.json({user, token});

token은 잘 찍히고 요청 헤더에 포함되어 있는데

11.PNG.webp22.PNG.webp

TypeError serialize 부분에서 에러가 뜨고

캡처.PNG.webp

실제 응답 에러가 납니다.... 쿠키 저장이 안되는 것 같습니다.

serialize가 undefine 되었다는데 위에 const token으로 제대로 선언되고 출력까지 잘 되는데 이유를 모르겠습니다...

 

 

 

reactnode.jspostgresqldockertypescript클론코딩next.js

Câu trả lời 1

0

안녕하세요, 인프런 AI 인턴입니다. 우오앙님.

우오앙님께서 겪고 있는 문제는 cookie.serialize에서 “TypeError: Cannot read properties of undefined (reading ‘serialize’)“라는 에러가 발생한 것으로 보입니다. 이는 cookie 모듈을 제대로 불러오지 못했거나, 올바르게 설치되지 않은 경우 발생할 수 있는 문제입니다. 이와 관련된 해결책을 몇 가지 제시해 드리겠습니다.

  1. cookie 모듈 올바르게 설치하기: 먼저, cookie 모듈이 설치되어 있는지 확인해주세요. 설치가 되어 있지 않거나 문제가 있다면 터미널에서 다음 명령어를 입력하여 설치해 주세요.

    npm install cookie
    

    또는

    yarn add cookie
    
  2. 모듈 제대로 불러오기: cookie 모듈을 제대로 불러오고 있는지 확인하세요. 일반적으로는 다음과 같이 사용합니다.

    import cookie from 'cookie';
    

    혹은 CommonJS 환경에서는

    const cookie = require('cookie');
    
  3. serialize 함수 사용 확인: cookie 모듈이 올바르게 불러와졌다면 cookie.serialize 메서드를 통해 Set-Cookie 헤더를 설정할 수 있습니다. 다음과 같은 형식으로 사용합니다:

    res.setHeader('Set-Cookie', cookie.serialize('token', token, {
     httpOnly: true, // 웹 브라우저를 통해 JavaScript가 이 쿠키를 접근하지 못하게 함
     maxAge: 60 * 60 * 24 * 7 // 쿠키 수명을 일주일로 설정
    }));
    

    HTTP 응답에 쿠키를 설정할 때 사용 가능한 옵션들을 명확히 설정해야 합니다.

이 문제는 cookie라는 모듈을 설치하거나 불러오는 과정에서 발생하는 일이 많습니다. 따라서 위의 방법으로 해결될 수 있을 것입니다.

아래와 같은 게시물을 참고하실 수 있습니다:
- TypeError: Cannot read properties of undefined (reading ‘serialize’) - 비슷한 문제를 겪는 사용자가 종종 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

alkjfslkn님의 프로필 이미지
alkjfslkn
Người đặt câu hỏi

설치나 import는 제대로 되어있고 헤더 설정과 상관없이 오류가 뜨고 있습니다. 물론 3.을 적용해봐도 똑같구요. 강사님 기존 답변도 실제 문제와 상이한 것 같습니다...

저도 지금 같은문제가 발생했는데 혹시 해결하셨을까요?

cookie.serialize 대신 express내의 res.cookie 메서드를 활용하니까 에러가 발생하진 않네요. 다른문제가 발생할지는 더 진행해봐야 알것같습니다. 혹시 몰라서 코드 남겨드립니다.

 

//쿠키저장
        res.cookie("token", token, {
            httpOnly: true, // 클라이언트에서 쿠키 읽기 방지
            maxAge: 60 * 60 * 24 * 7, // 1주일 (밀리초 단위)
            secure: process.env.NODE_ENV === "production", // HTTPS에서만 작동 (프로덕션 환경)
            path: "/", // 전체 사이트에서 쿠키 사용 가능
          });
          return res.json({ user, token });
Hình ảnh hồ sơ của alkjfslkn
alkjfslkn

câu hỏi đã được viết

Đặt câu hỏi