강의

멘토링

로드맵

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

코딩의외로님의 프로필 이미지
코딩의외로

작성한 질문수

수정해보았는데 답장이 오지 않습니다2

작성

·

116

0

수정해보았는데 답장이 오지 않습니다.

를 쓰고 Ai인턴에게 답을 받았지만 도움이 되지않습니다.

어떤 글을 참고하라고 하는데 그것을 봐서는 모르겠고 직관적으로 어떻게 수정을 해야하는지 알려주었으면 좋겠습니다.

써주신 글로 알아먹을 수 있다면 좋겠지만 마음도 다급하고 모르겠습니다. ㅠㅠ

image.pngimage.png

send를 누르면 터미널에 이렇게 뜹니다.

 

Server Running at 5000
C:\project\vswork\chatbot-app-master\node_modules\google-gax\node_modules\google-auth-library\build\src\auth\jwtclient.js:193
            throw new Error('The incoming JSON object does not contain a client_email field');
                  ^

Error: The incoming JSON object does not contain a client_email field
    at JWT.fromJSON (C:\project\vswork\chatbot-app-master\node_modules\google-gax\node_modules\google-auth-library\build\src\auth\jwtclient.js:193:19)
    at GoogleAuth._cacheClientFromJSON (C:\project\vswork\chatbot-app-master\node_modules\google-gax\node_modules\google-auth-library\build\src\auth\googleauth.js:313:16)
    at ReadStream.<anonymous> (C:\project\vswork\chatbot-app-master\node_modules\google-gax\node_modules\google-auth-library\build\src\auth\googleauth.js:347:36)
    at ReadStream.emit (node:events:519:28)
    at endReadableNT (node:internal/streams/readable:1696:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

Node.js v20.16.0
PS C:\project\vswork\chatbot-app-master> 

아래와 같이 값이 입력이되어있는데도말입니다. 루트파일에다가 구글 인증json을 위치를 끌어다 넣어도 그렇습니다. 가르쳐줘서 고맙습니다. 근데 이렇게 문제가 생겨서 이 구간을 벗어나고 싶습니다 ㅠㅠ

image.png

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이수경님, 문제 해결에 도움이 되고자 구체적인 내용을 알려드릴게요.

문제의 원인은 Dialogflow API를 사용하기 위한 Google 인증 정보 중 client_email 필드가 누락되었기 때문입니다. Google Cloud에서 제공하는 서비스 계정 키 파일(JSON 파일)에는 client_emailprivate_key 같은 필수 정보가 포함되어야 합니다. 이 장애의 핵심은 서비스 계정 키 파일의 내용을 올바르게 프로젝트에 적용하지 못했다는 데 있습니다.

해결 방안은 다음과 같습니다:

  1. Google Cloud Console에서 서비스 계정을 확인하신 후, 올바른 서비스 계정 키 파일(JSON 파일)을 다운로드합니다.
  2. 받은 JSON 파일에 client_emailprivate_key 등 필수 정보가 있는지 확인합니다.
  3. 프로젝트의 해당 위치에 JSON 파일을 올바르게 배치했는지 확인합니다. 보통 이 정보는 환경 변수를 통해 관리되거나, 코드 내에서 직접 경로를 지정하여 불러옵니다.

이미지에서 보여주신 config/dev.js 파일에 googleClientEmailgooglePrivateKey 값이 빈 문자열로 설정되어 있습니다. 여기에 실제 Google 서비스 계정 키에서 client_email 값을 googleClientEmail에, private_key 값을 googlePrivateKey에 복사하여 붙여넣어 주세요. 예를 들면 다음과 같이 됩니다:

module.exports = {
  googleProjectID: 'your-google-project-id',
  dialogFlowSessionID: 'your-dialogflow-session-id',
  dialogFlowSessionLanguageCode: 'your-dialogflow-language-code',
  googleClientEmail: 'your-service-account-email@your-project-id.iam.gserviceaccount.com',
  googlePrivateKey: '-----BEGIN PRIVATE KEY-----\n(your private key here)\n-----END PRIVATE KEY-----\n',
  mongoURI: 'your-mongodb-uri'
};

또한, 환경 변수로 관리하는 경우 .env 파일이나 환경 설정에서 해당 값을 올바르게 설정했는지 확인해 주세요.

올바른 서비스 계정 키 정보로 설정한 뒤, 다시 HTTP 요청을 시도해 보세요. 이 방법으로 문제가 해결되어야 합니다. 만약 여전히 문제가 발생한다면, 서비스 계정 키 파일의 경로를 코드에서 정확히 참조하고 있는지, 그리고 JSON 파일의 형식이 올바른지 다시 한 번 확인해 보시기 바랍니다.

추가 질문이 있으시면 언제든지 문의해 주세요.

코딩의외로님의 프로필 이미지
코딩의외로

작성한 질문수

질문하기