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

neok님의 프로필 이미지
neok

작성한 질문수

Node.js 교과서 - 기본부터 프로젝트 실습까지

API 호출 서버 만들기

500 server error

해결된 질문

작성

·

15K

0

제로초님과 동일한 코드를 사용하였는데 /test시 

Request failed with status code 500에러가 뜹니다.

어디서 오류가 난걸까요...?

 

Request failed with status code 500

    at createError (\node_modules\axios\lib\core\createError.js:16:15)

    at settle (\node_modules\axios\lib\core\settle.js:17:12)

    at IncomingMessage.handleStreamEnd (\node_modules\axios\lib\adapters\http.js:237:11)

    at IncomingMessage.emit (events.js:194:15)

    at endReadableNT (_stream_readable.js:1125:12)

    at process._tickCallback (internal/process/next_tick.js:63:19)

답변 10

1

일단 에러500이 뜨는 이유는 지금 sequelize 문법상 find는 없네요 . findOne 을 써야됩니다. 업뎃 되면서 find가 없으니 요청했을때 찾을수가없으니 500 이 뜨는것같네요. 

그걸 수정했는데 이제 401 에러가 뜨네요......ㅎㅎ 

다시 잡아보러 가볼께요 ^^ 휴......

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

일단 과정을 말씀드리자면 8003에서 8002로 요청을 보내는 것입니다.(서버가 서버한테 요청보내는 것을 가정)

두 서버가 켜져있어야 하고 8002에서 8003 도메인 등록이 되어 있어야 합니다.

8003의 .env에는 8002에서 발급받은 키가 등록되어 있어야 합니다.

8003/test로 접속하면 json 객체가 표시되어야 합니다.

 

저는 방금 ch10/10.4의 코드로 실행해보았습니다.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아, 잘못 말씀드렸네요. 8003이랑 8002 서버를 켜셔야 합니다. 8001은 상관없고요.

그리고 8002/test를 말씀하시는 건가요? 8003에서 8002로 요청을 보내야 합니다.

0

백세영 Baik 님과 동일한 이슈인데

혹시 해결하셨나요?

0

neok 님과 동일한 에러가 나네요. api / v1쪽도 코드가 동일한데 왜 이런 에러가 날까요,ㅠ..

0

neok님의 프로필 이미지
neok
질문자

해결했습니다! nodebird-api v1쪽에서 에러가 있었나봐요. 감사합니다!

0

neok님의 프로필 이미지
neok
질문자

네 8001, 8002 제대로 작동하는데 8003/test만 안되네요,,

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

혹시 localhost:8002쪽도 확인해보셨나요? 또는 localhost:8002쪽 서버도 켜셨나요? 8001과 8002 서버 둘 다 켜야 합니다. 요청에 대한 응답이 제대로 안 오는 것 같습니다.

0

neok님의 프로필 이미지
neok
질문자

네 깃허브에 있는 코드 복사했는데도 그러네요ㅠㅠ 에러 처리는 되어있습니다.

index.js

const express = require('express'),
axios = require('axios');

const router = express.Router();

router.get('/test', async (req, res, next) => {
try {
if (!req.session.jwt) { // 세션에 토큰이 없으면
const tokenResult = await axios.post('http://localhost:8002/v1/token', {
clientSecret: process.env.CLIENT_SECRET,
});

if (tokenResult.data && tokenResult.data.code === 200) { // 토큰 발급 성공
req.session.jwt = tokenResult.data.token; // 세션에 토큰 저장
} else { // 토큰 발급 실패
res.json(tokenResult.data); // 발급 실패 사유 응답
}
}
// 발급받은 토큰 테스트
const result = await axios.get('http://localhost:8002/v1/test', {
headers: { authorization: req.session.jwt },
});

res.json(result.data);
} catch (error) {
console.error(error);

if (error.response.status === 419) { // 토큰 만료 시
res.json(error.response.data);
}

next(error);
}
});

module.exports = router;

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

저 부분만 봐서는 에러를 알 수가 없습니다. 동일한 코드라는게 제 깃허브 코드를 사용하신 건가요?

라우터에 에러 처리가 필요합니다(console.error(error)같은 것)

neok님의 프로필 이미지
neok

작성한 질문수

질문하기