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

seonjun Moon님의 프로필 이미지
seonjun Moon

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

CORS 문제 해결하기

에러가 나는데 도저히 못찾겠습니다 ㅠㅠ

작성

·

203

0

 

현재 안되는 부분의 오류입니다. 

 

action값을 sagas의 user.js에서 받아서 yield call(signUpAPI, action.data);하는 부분에서 오류가 납니다. 

오류 메시지를 타고 가보면 무슨 data가 선언이 안됐다는 뚱딴지 같은 오류를 내보내는데 도대체 이해가 안됩니다. ㅠㅠ

 

signup 하는 데서 오류가 발생한다!

그래서 쭈욱 따라가보니...

undefined라는 이상한 오류... 

도대체 뭐가 문제일까요?

 

회원가입시 입력한 값은 다 받아오는데 이제 API를 타고 back에 데이터를 넣어주지를 못하고 잇습니다. 

 

sagas 안에 user.js에 console을 제가 찎어봤는데 

yield call(signUpAPI, action.data) 이 부분에서 터져버립니다. 

import { all, delay, fork, put, takeLatest, call } from 'redux-saga/effects';
import {
  FOLLOW_FAILURE,
  FOLLOW_REQUEST,
  FOLLOW_SUCCESS,
  LOG_IN_FAILURE,
  LOG_IN_REQUEST,
  LOG_IN_SUCCESS,
  LOG_OUT_FAILURE,
  LOG_OUT_REQUEST,
  LOG_OUT_SUCCESS,
  SIGN_UP_FAILURE,
  SIGN_UP_REQUEST,
  SIGN_UP_SUCCESS,
  UNFOLLOW_FAILURE,
  UNFOLLOW_REQUEST,
  UNFOLLOW_SUCCESS,
} from '../reducers/user';

function logInAPI(data) {
  return axios.post('/api/login', data);
}

function* logIn(action) {
  try {
    console.log('saga logIn');
    // const result = yield call(logInAPI);
    yield delay(1000);
    yield put({
      type: LOG_IN_SUCCESS,
      data: action.data,
    });
  } catch (err) {
    console.error(err);
    yield put({
      type: LOG_IN_FAILURE,
      error: err.response.data,
    });
  }
}

function logOutAPI() {
  return axios.post('/api/logout');
}

function* logOut() {
  try {
    // const result = yield call(logOutAPI);
    yield delay(1000);
    yield put({
      type: LOG_OUT_SUCCESS,
    });
  } catch (err) {
    console.error(err);
    yield put({
      type: LOG_OUT_FAILURE,
      error: err.response.data,
    });
  }
}

function signUpAPI(data) {
  return axios.post('http://localhost:3065/user', data);
}

function* signUp(action) {
  try {
    console.log("뭐가 이상한데1");
    console.log("action.data" , action.data);
    const result = yield call(signUpAPI, action.data);
    console.log("뭐가 이상한데2");
    yield put({
      type: SIGN_UP_SUCCESS,
    });
  } catch (err) {
    yield put({
      type: SIGN_UP_FAILURE,
      error: err.response.data,
    });
  }
}

function followAPI() {
  return axios.post('/api/follow');
}

function* follow(action) {
  try {
    // const result = yield call(followAPI);
    yield delay(1000);
    yield put({
      type: FOLLOW_SUCCESS,
      data: action.data,
    });
  } catch (err) {
    console.error(err);
    yield put({
      type: FOLLOW_FAILURE,
      error: err.response.data,
    });
  }
}

function unfollowAPI() {
  return axios.post('/api/unfollow');
}

function* unfollow(action) {
  try {
    // const result = yield call(unfollowAPI);
    yield delay(1000);
    yield put({
      type: UNFOLLOW_SUCCESS,
      data: action.data,
    });
  } catch (err) {
    console.error(err);
    yield put({
      type: UNFOLLOW_FAILURE,
      error: err.response.data,
    });
  }
}

function* watchFollow() {
  yield takeLatest(FOLLOW_REQUEST, follow);
}

function* watchUnfollow() {
  yield takeLatest(UNFOLLOW_REQUEST, unfollow);
}

function* watchLogIn() {
  yield takeLatest(LOG_IN_REQUEST, logIn);
}

function* watchLogOut() {
  yield takeLatest(LOG_OUT_REQUEST, logOut);
}

function* watchSignUp() {
  yield takeLatest(SIGN_UP_REQUEST, signUp);
}

export default function* userSaga() {
  yield all([
    fork(watchFollow),
    fork(watchUnfollow),
    fork(watchLogIn),
    fork(watchLogOut),
    fork(watchSignUp),
  ]);
}

 

또 심각한점은 

 

 

여기 network를 보시면 아예 응답 자체가 넘어가지 않고 있는 모습을 확인할 수 있습니다. post가 안되면 post실패다 뭐가 status가 나와야 하는데 아무리 가입하기를 눌러도 그런 모습은 확인할 수 없습니다.

 

답변 2

1

sagas/user.js 안에 axios import가 안되어있는거 같아요!

0

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

err.response.data에서 에러가 난 겁니다. user.js:78 보고 알았습니다. 서버 응답이 없는건데 백엔드 서버가 켜져있나요?

seonjun Moon님의 프로필 이미지
seonjun Moon
질문자

켜져 있는데 도대체 왜그럴까여ㅛ ㅠㅠ

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

서버쪽에서 에러가 없나요? 스크롤 제일 아래로 내린 뒤 다시 프론트 실행해보시고 에러 메시지 찾아보세요.

seonjun Moon님의 프로필 이미지
seonjun Moon

작성한 질문수

질문하기