Inflearn brand logo image

인프런 커뮤니티 질문&답변

slslsl님의 프로필 이미지
slslsl

작성한 질문수

[플러터플로우] 실전! 앱 출시를 위한 끝장 노하우!

[SDK] 웹에서 테스트하기

카카오로그인SDK 질문

작성

·

111

·

수정됨

0

안녕하세요. 저는 createCustomToken 에러 로그가 이렇게 뜹니다. 분명 처음부터 끝까지 영상 그대로 했는데 왜그런걸까요? user collection등도 다 활성화 되어있는 상태입니다.

createCustomToken

jdu0e5j7y993

TypeError: Cannot read properties of undefined (reading 'user')

at /workspace/create_custom_token.js:21:21

at /workspace/node_modules/firebase-functions/lib/common/onInit.js:33:16

at AsyncLocalStorage.run (node:async_hooks:338:14)

at /workspace/node_modules/firebase-functions/lib/v2/trace.js:18:37

at cloudFunction (/workspace/node_modules/firebase-functions/lib/v1/providers/https.js:53:78)

at /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/function_wrappers.js💯29

at process.processTicksAndRejections (node:internal/process/task_queues:77:11)

GPT한테 물어보면,

이 Cloud Function은 onRequest를 사용하고 있고, 데이터를 request.body.data로 받도록 작성되어 있습니다. 그런데 실제 요청에서는 request.body에 직접 user 객체가 있거나, data가 빠져있을 가능성이 높습니다. 라고 합니다.
GPT가 수정해주는 코드나 밑에 인프런에의 수정코드로 다 해도 DEPLOY부터 실패하네요~~도와주실 수 있으실까요?

답변 2

0

쓱코치님의 프로필 이미지
쓱코치
지식공유자

안녕하세요.

받은 데이터를 로그 출력해보면 뭔가가 나올 것 같은데요.

 

createCustomToken 함수 초반에 로그 찍는 부분이 있습니다.

    functions.logger.log(
      `# createUser request: ${JSON.stringify(request.body)}`,
    );

firebase console 에서 이 부분이 어떻게 나왔는지 공유 가능할까요?

로그를 공유해주신다면 도와드리기 수월할 것 같습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. slslsl님, createCustomToken 함수에서 발생한 오류와 관련하여 도움을 드리겠습니다.

오류 핵심 요약

해당 오류는 createCustomToken 함수 내에서 요청(request) 객체의 구조와 관련된 문제로 인해 발생하는 것 같습니다. 이 문제는 Cloud Function에서 request.body.data에 접근하려고 할 때, 실제로 data 객체가 존재하지 않아서 발생합니다.

해결 방법

이 문제를 해결하기 위해 다음 단계를 시도해 보세요:

  1. Cloud Function 코드 검토:

    • createCustomToken 함수에서 request.body.data가 아닌, request.body 또는 request.body.user 형태로 요청을 받을 수 있도록 코드를 수정해 보세요.

    • 예를 들어, 아래와 같이 수정할 수 있습니다:

      exports.createCustomToken = functions.https.onRequest(async (request, response) => {
       const user = request.body.user; // request.body.data 대신 request.body.user 사용
       if (!user) {
           return response.status(400).send('User data is required.');
       }
      
      
       // 사용자 토큰 생성 로직
      });
      
    • request.body.user가 실제로 요청에서 전달되는지를 확인하세요. 필요한 경우 로그를 추가하여 전달된 데이터 구조를 확인하는 것도 유용합니다.

  2. 테스트 요청 검토:

    • 테스트 시 사용하신 요청의 본문 구조를 확인해 보세요. 예를 들어, 사용자 정보를 요청할 때는 다음과 같은 형식으로 데이터를 전달해야 합니다:
      
      {
       "user": {
           "uid": "user123",
           "email": "user@example.com"
       }
      }
      

  3. 로그 추가:

    • Cloud Function에서 적절한 로그를 추가하여 실제 요청 데이터를 파악하세요. 이렇게 하면 어디에서 데이터가 누락되고 있는지 쉽게 식별할 수 있습니다.

유사한 문제 해결 사례

아래 링크에서 다른 사용자가 유사한 문제를 해결한 경험을 확인할 수 있습니다:

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

slslsl님의 프로필 이미지
slslsl

작성한 질문수

질문하기