로그인 시 오류가 납니다.
이 강의 뒤를 봐야 에러가 안나는 건지는 모르겠는데 현재 length의 앞부분이 정의 되어 있지 않다는 아래와 같은 에러가 납니다.
TypeError: Cannot read property 'length' of undefined
에러가 나는 곳은 UserProfile.js 부분의
<Card
actions={[
<div key="twit">짹짹<br />{me.Posts.length}</div>,
<div key="following">팔로잉<br />{me.Followings.length}</div>,
<div key="follower">팔로워<br />{me.Followers.length}</div>,
]}
>
이 부분인데요. me 부분을 보기위해서 리듀서의 user.js로 가면 아래와 같습니다...
export const initialState = {
logInLoading: false, // 로그인 시도중
logInDone: false,
logInError: null,
logOutLoading: false, // 로그아웃 시도중
logOutDone: false,
logOutError: null,
signUpLoading: false, // 회원가입 시도중
signUpDone: false,
signUpError: null,
me: null,
signUpData: {},
loginData: {},
}
export const LOG_IN_REQUEST = 'LOG_IN_REQUEST';
export const LOG_IN_SUCCESS = 'LOG_IN_SUCCESS';
export const LOG_IN_FAILURE = 'LOG_IN_FAILURE';
export const LOG_OUT_REQUEST = 'LOG_OUT_REQUEST';
export const LOG_OUT_SUCCESS = 'LOG_OUT_SUCCESS';
export const LOG_OUT_FAILURE = 'LOG_OUT_FAILURE';
export const SIGN_UP_REQUEST = 'SIGN_UP_REQUEST';
export const SIGN_UP_SUCCESS = 'SIGN_UP_SUCCESS';
export const SIGN_UP_FAILURE = 'SIGN_UP_FAILURE';
export const FOLLOW_REQUEST = 'FOLLOW_REQUEST';
export const FOLLOW_SUCCESS = 'FOLLOW_SUCCESS';
export const FOLLOW_FAILURE = 'FOLLOW_FAILURE';
export const UNFOLLOW_REQUEST = 'UNFOLLOW_REQUEST';
export const UNFOLLOW_SUCCESS = 'UNFOLLOW_SUCCESS';
export const UNFOLLOW_FAILURE = 'UNFOLLOW_FAILURE';
const dummyUser = (data) => ({
...data,
nickname: 'harry',
id: 1,
posts: [],
Followings: [],
Followers: [],
});
export const loginRequestAction = (data) => {
return {
type: LOG_IN_REQUEST,
data,
}
}
export const logoutRequestAction = (data) => {
return {
type: LOG_OUT_REQUEST,
data,
}
}
const reducer = (state = initialState, action) => {
switch (action.type) {
case LOG_IN_REQUEST:
console.log('reducer logIn')
return {
...state,
logInLoading: true,
logInError: null,
logInDone: false,
};
case LOG_IN_SUCCESS:
return {
...state,
logInLoading: false,
logInDone: true,
me: dummyUser(action.data),
};
case LOG_IN_FAILURE:
return {
...state,
logInLoading: false,
logInError: action.error,
};
case LOG_OUT_REQUEST:
return {
logOutLoading : true,
logOutError : null,
logOutDone : false,
}
case LOG_OUT_SUCCESS:
return {
logOutLoading : false,
logOutDone : true,
me : null,
}
case LOG_OUT_FAILURE:
return {
logOutLoading : false,
logOutError : action.error,
}
case SIGN_UP_REQUEST:
return {
signUpLoading : true,
signUpError : null,
signUpDone : false,
}
case SIGN_UP_SUCCESS:
return {
signUpLoading : false,
signUpDone : true,
}
case SIGN_UP_FAILURE:
return {
signUpLoading : false,
signUpError : action.error,
}
default:
return state;
}
};
export default reducer;
혹시 더미유저부분의 배열이 빈배열이기 때문인가 싶어서 그부분만 제로초님 깃허브 부분 복붙했는데 그래도 같은 에러가 발생합니다. 혹시몰라서 사가의 user.js도 넣겠습니다.
import axios from 'axios'
import { all, fork, put, delay, takeLatest } from 'redux-saga/effects';
import {
LOG_IN_REQUEST, LOG_IN_SUCCESS, LOG_IN_FAILURE,
LOG_OUT_REQUEST, LOG_OUT_SUCCESS, LOG_OUT_FAILURE,
SIGN_UP_REQUEST, SIGN_UP_SUCCESS, SIGN_UP_FAILURE,
} 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, action.data)
yield delay(1000);
yield put({
type: LOG_IN_SUCCESS,
data: action.data,
});
} catch (err) {
yield put({ // 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,
// data: result.data
});
} catch (err) {
yield put({ // put은 디스패치
type: LOG_OUT_FAILURE,
error: err.response.data,
})
}
}
function signUpAPI() {
return axios.post('/api/logout')
}
function* signUp() {
try {
// const result = yield call(signUpAPI)
yield delay(1000);
yield put({
type: SIGN_UP_SUCCESS,
// data: result.data
});
} catch (err) {
yield put({ // put은 디스패치
type: SIGN_UP_FAILURE,
error: err.response.data,
})
}
}
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(watchLogIn),
fork(watchLogOut),
fork(watchLogOut),
])
}
답변 1
넥스트 버젼 질문
0
75
2
로그인시 401 Unauthorized 오류가 뜹니다
0
88
1
무한 스크롤 중 스크롤 튐 현상
0
172
1
특정 페이지 접근을 막고 싶을 때
0
103
2
createGlobalStyle의 위치와 영향범위
0
94
2
인라인 스타일 리렌더링 관련
0
90
2
vsc 에서 npm init 설치시 오류
0
146
2
nextjs 15버전 사용 가능할까요?
0
158
1
화면 새로고침 문의
0
120
1
RTK에서 draft, state 차이가 있나요?
0
152
2
Next 14 사용해도 될까요?
0
452
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
348
1
url 오류 질문있습니다
0
211
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
372
1
sudo certbot --nginx 에러
0
1271
2
Minified React error 콘솔에러 (hydrate)
0
469
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
246
1
프론트서버 배포 후 EADDRINUSE에러 발생
0
325
1
npm run build 에러
0
517
1
front 서버 npm run build 중에 발생한 에러들
0
381
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
336
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
284
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
236
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
200
1





